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

com.onthegomap.planetiler.proto.StreamArchiveProto Maven / Gradle / Ivy

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: stream_archive_proto.proto
// Protobuf Java Version: 4.28.1

package com.onthegomap.planetiler.proto;

public final class StreamArchiveProto {
  private StreamArchiveProto() {}
  static {
    com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
      com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
      /* major= */ 4,
      /* minor= */ 28,
      /* patch= */ 1,
      /* suffix= */ "",
      StreamArchiveProto.class.getName());
  }
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * Protobuf enum {@code com.onthegomap.planetiler.proto.TileCompression}
   */
  public enum TileCompression
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * TILE_COMPRESSION_UNSPECIFIED = 0;
     */
    TILE_COMPRESSION_UNSPECIFIED(0),
    /**
     * TILE_COMPRESSION_GZIP = 1;
     */
    TILE_COMPRESSION_GZIP(1),
    /**
     * TILE_COMPRESSION_NONE = 2;
     */
    TILE_COMPRESSION_NONE(2),
    UNRECOGNIZED(-1),
    ;

    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 28,
        /* patch= */ 1,
        /* suffix= */ "",
        TileCompression.class.getName());
    }
    /**
     * TILE_COMPRESSION_UNSPECIFIED = 0;
     */
    public static final int TILE_COMPRESSION_UNSPECIFIED_VALUE = 0;
    /**
     * TILE_COMPRESSION_GZIP = 1;
     */
    public static final int TILE_COMPRESSION_GZIP_VALUE = 1;
    /**
     * TILE_COMPRESSION_NONE = 2;
     */
    public static final int TILE_COMPRESSION_NONE_VALUE = 2;


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

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

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static TileCompression forNumber(int value) {
      switch (value) {
        case 0: return TILE_COMPRESSION_UNSPECIFIED;
        case 1: return TILE_COMPRESSION_GZIP;
        case 2: return TILE_COMPRESSION_NONE;
        default: return null;
      }
    }

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

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

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:com.onthegomap.planetiler.proto.TileCompression)
  }

  public interface EntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.onthegomap.planetiler.proto.Entry)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
     * @return Whether the tile field is set.
     */
    boolean hasTile();
    /**
     * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
     * @return The tile.
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry getTile();
    /**
     * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntryOrBuilder getTileOrBuilder();

    /**
     * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
     * @return Whether the initialization field is set.
     */
    boolean hasInitialization();
    /**
     * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
     * @return The initialization.
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry getInitialization();
    /**
     * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntryOrBuilder getInitializationOrBuilder();

    /**
     * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
     * @return Whether the finish field is set.
     */
    boolean hasFinish();
    /**
     * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
     * @return The finish.
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry getFinish();
    /**
     * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntryOrBuilder getFinishOrBuilder();

    com.onthegomap.planetiler.proto.StreamArchiveProto.Entry.EntryCase getEntryCase();
  }
  /**
   * Protobuf type {@code com.onthegomap.planetiler.proto.Entry}
   */
  public static final class Entry extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.onthegomap.planetiler.proto.Entry)
      EntryOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 28,
        /* patch= */ 1,
        /* suffix= */ "",
        Entry.class.getName());
    }
    // Use Entry.newBuilder() to construct.
    private Entry(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
    }
    private Entry() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Entry_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Entry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.onthegomap.planetiler.proto.StreamArchiveProto.Entry.class, com.onthegomap.planetiler.proto.StreamArchiveProto.Entry.Builder.class);
    }

    private int entryCase_ = 0;
    @SuppressWarnings("serial")
    private java.lang.Object entry_;
    public enum EntryCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      TILE(1),
      INITIALIZATION(2),
      FINISH(3),
      ENTRY_NOT_SET(0);
      private final int value;
      private EntryCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static EntryCase valueOf(int value) {
        return forNumber(value);
      }

      public static EntryCase forNumber(int value) {
        switch (value) {
          case 1: return TILE;
          case 2: return INITIALIZATION;
          case 3: return FINISH;
          case 0: return ENTRY_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public EntryCase
    getEntryCase() {
      return EntryCase.forNumber(
          entryCase_);
    }

    public static final int TILE_FIELD_NUMBER = 1;
    /**
     * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
     * @return Whether the tile field is set.
     */
    @java.lang.Override
    public boolean hasTile() {
      return entryCase_ == 1;
    }
    /**
     * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
     * @return The tile.
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry getTile() {
      if (entryCase_ == 1) {
         return (com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry) entry_;
      }
      return com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.getDefaultInstance();
    }
    /**
     * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntryOrBuilder getTileOrBuilder() {
      if (entryCase_ == 1) {
         return (com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry) entry_;
      }
      return com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.getDefaultInstance();
    }

    public static final int INITIALIZATION_FIELD_NUMBER = 2;
    /**
     * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
     * @return Whether the initialization field is set.
     */
    @java.lang.Override
    public boolean hasInitialization() {
      return entryCase_ == 2;
    }
    /**
     * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
     * @return The initialization.
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry getInitialization() {
      if (entryCase_ == 2) {
         return (com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry) entry_;
      }
      return com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.getDefaultInstance();
    }
    /**
     * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntryOrBuilder getInitializationOrBuilder() {
      if (entryCase_ == 2) {
         return (com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry) entry_;
      }
      return com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.getDefaultInstance();
    }

    public static final int FINISH_FIELD_NUMBER = 3;
    /**
     * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
     * @return Whether the finish field is set.
     */
    @java.lang.Override
    public boolean hasFinish() {
      return entryCase_ == 3;
    }
    /**
     * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
     * @return The finish.
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry getFinish() {
      if (entryCase_ == 3) {
         return (com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry) entry_;
      }
      return com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.getDefaultInstance();
    }
    /**
     * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntryOrBuilder getFinishOrBuilder() {
      if (entryCase_ == 3) {
         return (com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry) entry_;
      }
      return com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.getDefaultInstance();
    }

    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 (entryCase_ == 1) {
        output.writeMessage(1, (com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry) entry_);
      }
      if (entryCase_ == 2) {
        output.writeMessage(2, (com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry) entry_);
      }
      if (entryCase_ == 3) {
        output.writeMessage(3, (com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry) entry_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (entryCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry) entry_);
      }
      if (entryCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry) entry_);
      }
      if (entryCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry) entry_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.Entry)) {
        return super.equals(obj);
      }
      com.onthegomap.planetiler.proto.StreamArchiveProto.Entry other = (com.onthegomap.planetiler.proto.StreamArchiveProto.Entry) obj;

      if (!getEntryCase().equals(other.getEntryCase())) return false;
      switch (entryCase_) {
        case 1:
          if (!getTile()
              .equals(other.getTile())) return false;
          break;
        case 2:
          if (!getInitialization()
              .equals(other.getInitialization())) return false;
          break;
        case 3:
          if (!getFinish()
              .equals(other.getFinish())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (entryCase_) {
        case 1:
          hash = (37 * hash) + TILE_FIELD_NUMBER;
          hash = (53 * hash) + getTile().hashCode();
          break;
        case 2:
          hash = (37 * hash) + INITIALIZATION_FIELD_NUMBER;
          hash = (53 * hash) + getInitialization().hashCode();
          break;
        case 3:
          hash = (37 * hash) + FINISH_FIELD_NUMBER;
          hash = (53 * hash) + getFinish().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Entry parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Entry parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Entry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Entry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Entry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Entry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Entry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Entry parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Entry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Entry parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Entry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Entry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.onthegomap.planetiler.proto.StreamArchiveProto.Entry 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.onthegomap.planetiler.proto.Entry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:com.onthegomap.planetiler.proto.Entry)
        com.onthegomap.planetiler.proto.StreamArchiveProto.EntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Entry_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Entry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.onthegomap.planetiler.proto.StreamArchiveProto.Entry.class, com.onthegomap.planetiler.proto.StreamArchiveProto.Entry.Builder.class);
      }

      // Construct using com.onthegomap.planetiler.proto.StreamArchiveProto.Entry.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (tileBuilder_ != null) {
          tileBuilder_.clear();
        }
        if (initializationBuilder_ != null) {
          initializationBuilder_.clear();
        }
        if (finishBuilder_ != null) {
          finishBuilder_.clear();
        }
        entryCase_ = 0;
        entry_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Entry_descriptor;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Entry getDefaultInstanceForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.Entry.getDefaultInstance();
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Entry build() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.Entry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Entry buildPartial() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.Entry result = new com.onthegomap.planetiler.proto.StreamArchiveProto.Entry(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        buildPartialOneofs(result);
        onBuilt();
        return result;
      }

      private void buildPartial0(com.onthegomap.planetiler.proto.StreamArchiveProto.Entry result) {
        int from_bitField0_ = bitField0_;
      }

      private void buildPartialOneofs(com.onthegomap.planetiler.proto.StreamArchiveProto.Entry result) {
        result.entryCase_ = entryCase_;
        result.entry_ = this.entry_;
        if (entryCase_ == 1 &&
            tileBuilder_ != null) {
          result.entry_ = tileBuilder_.build();
        }
        if (entryCase_ == 2 &&
            initializationBuilder_ != null) {
          result.entry_ = initializationBuilder_.build();
        }
        if (entryCase_ == 3 &&
            finishBuilder_ != null) {
          result.entry_ = finishBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.Entry) {
          return mergeFrom((com.onthegomap.planetiler.proto.StreamArchiveProto.Entry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.onthegomap.planetiler.proto.StreamArchiveProto.Entry other) {
        if (other == com.onthegomap.planetiler.proto.StreamArchiveProto.Entry.getDefaultInstance()) return this;
        switch (other.getEntryCase()) {
          case TILE: {
            mergeTile(other.getTile());
            break;
          }
          case INITIALIZATION: {
            mergeInitialization(other.getInitialization());
            break;
          }
          case FINISH: {
            mergeFinish(other.getFinish());
            break;
          }
          case ENTRY_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getTileFieldBuilder().getBuilder(),
                    extensionRegistry);
                entryCase_ = 1;
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getInitializationFieldBuilder().getBuilder(),
                    extensionRegistry);
                entryCase_ = 2;
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getFinishFieldBuilder().getBuilder(),
                    extensionRegistry);
                entryCase_ = 3;
                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int entryCase_ = 0;
      private java.lang.Object entry_;
      public EntryCase
          getEntryCase() {
        return EntryCase.forNumber(
            entryCase_);
      }

      public Builder clearEntry() {
        entryCase_ = 0;
        entry_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private com.google.protobuf.SingleFieldBuilder<
          com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry, com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntryOrBuilder> tileBuilder_;
      /**
       * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
       * @return Whether the tile field is set.
       */
      @java.lang.Override
      public boolean hasTile() {
        return entryCase_ == 1;
      }
      /**
       * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
       * @return The tile.
       */
      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry getTile() {
        if (tileBuilder_ == null) {
          if (entryCase_ == 1) {
            return (com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry) entry_;
          }
          return com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.getDefaultInstance();
        } else {
          if (entryCase_ == 1) {
            return tileBuilder_.getMessage();
          }
          return com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.getDefaultInstance();
        }
      }
      /**
       * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
       */
      public Builder setTile(com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry value) {
        if (tileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          entry_ = value;
          onChanged();
        } else {
          tileBuilder_.setMessage(value);
        }
        entryCase_ = 1;
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
       */
      public Builder setTile(
          com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.Builder builderForValue) {
        if (tileBuilder_ == null) {
          entry_ = builderForValue.build();
          onChanged();
        } else {
          tileBuilder_.setMessage(builderForValue.build());
        }
        entryCase_ = 1;
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
       */
      public Builder mergeTile(com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry value) {
        if (tileBuilder_ == null) {
          if (entryCase_ == 1 &&
              entry_ != com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.getDefaultInstance()) {
            entry_ = com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.newBuilder((com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry) entry_)
                .mergeFrom(value).buildPartial();
          } else {
            entry_ = value;
          }
          onChanged();
        } else {
          if (entryCase_ == 1) {
            tileBuilder_.mergeFrom(value);
          } else {
            tileBuilder_.setMessage(value);
          }
        }
        entryCase_ = 1;
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
       */
      public Builder clearTile() {
        if (tileBuilder_ == null) {
          if (entryCase_ == 1) {
            entryCase_ = 0;
            entry_ = null;
            onChanged();
          }
        } else {
          if (entryCase_ == 1) {
            entryCase_ = 0;
            entry_ = null;
          }
          tileBuilder_.clear();
        }
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.Builder getTileBuilder() {
        return getTileFieldBuilder().getBuilder();
      }
      /**
       * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
       */
      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntryOrBuilder getTileOrBuilder() {
        if ((entryCase_ == 1) && (tileBuilder_ != null)) {
          return tileBuilder_.getMessageOrBuilder();
        } else {
          if (entryCase_ == 1) {
            return (com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry) entry_;
          }
          return com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.getDefaultInstance();
        }
      }
      /**
       * .com.onthegomap.planetiler.proto.TileEntry tile = 1;
       */
      private com.google.protobuf.SingleFieldBuilder<
          com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry, com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntryOrBuilder> 
          getTileFieldBuilder() {
        if (tileBuilder_ == null) {
          if (!(entryCase_ == 1)) {
            entry_ = com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.getDefaultInstance();
          }
          tileBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry, com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntryOrBuilder>(
                  (com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry) entry_,
                  getParentForChildren(),
                  isClean());
          entry_ = null;
        }
        entryCase_ = 1;
        onChanged();
        return tileBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilder<
          com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry, com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntryOrBuilder> initializationBuilder_;
      /**
       * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
       * @return Whether the initialization field is set.
       */
      @java.lang.Override
      public boolean hasInitialization() {
        return entryCase_ == 2;
      }
      /**
       * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
       * @return The initialization.
       */
      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry getInitialization() {
        if (initializationBuilder_ == null) {
          if (entryCase_ == 2) {
            return (com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry) entry_;
          }
          return com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.getDefaultInstance();
        } else {
          if (entryCase_ == 2) {
            return initializationBuilder_.getMessage();
          }
          return com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.getDefaultInstance();
        }
      }
      /**
       * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
       */
      public Builder setInitialization(com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry value) {
        if (initializationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          entry_ = value;
          onChanged();
        } else {
          initializationBuilder_.setMessage(value);
        }
        entryCase_ = 2;
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
       */
      public Builder setInitialization(
          com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.Builder builderForValue) {
        if (initializationBuilder_ == null) {
          entry_ = builderForValue.build();
          onChanged();
        } else {
          initializationBuilder_.setMessage(builderForValue.build());
        }
        entryCase_ = 2;
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
       */
      public Builder mergeInitialization(com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry value) {
        if (initializationBuilder_ == null) {
          if (entryCase_ == 2 &&
              entry_ != com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.getDefaultInstance()) {
            entry_ = com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.newBuilder((com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry) entry_)
                .mergeFrom(value).buildPartial();
          } else {
            entry_ = value;
          }
          onChanged();
        } else {
          if (entryCase_ == 2) {
            initializationBuilder_.mergeFrom(value);
          } else {
            initializationBuilder_.setMessage(value);
          }
        }
        entryCase_ = 2;
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
       */
      public Builder clearInitialization() {
        if (initializationBuilder_ == null) {
          if (entryCase_ == 2) {
            entryCase_ = 0;
            entry_ = null;
            onChanged();
          }
        } else {
          if (entryCase_ == 2) {
            entryCase_ = 0;
            entry_ = null;
          }
          initializationBuilder_.clear();
        }
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.Builder getInitializationBuilder() {
        return getInitializationFieldBuilder().getBuilder();
      }
      /**
       * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
       */
      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntryOrBuilder getInitializationOrBuilder() {
        if ((entryCase_ == 2) && (initializationBuilder_ != null)) {
          return initializationBuilder_.getMessageOrBuilder();
        } else {
          if (entryCase_ == 2) {
            return (com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry) entry_;
          }
          return com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.getDefaultInstance();
        }
      }
      /**
       * .com.onthegomap.planetiler.proto.InitializationEntry initialization = 2;
       */
      private com.google.protobuf.SingleFieldBuilder<
          com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry, com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntryOrBuilder> 
          getInitializationFieldBuilder() {
        if (initializationBuilder_ == null) {
          if (!(entryCase_ == 2)) {
            entry_ = com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.getDefaultInstance();
          }
          initializationBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry, com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntryOrBuilder>(
                  (com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry) entry_,
                  getParentForChildren(),
                  isClean());
          entry_ = null;
        }
        entryCase_ = 2;
        onChanged();
        return initializationBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilder<
          com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry, com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntryOrBuilder> finishBuilder_;
      /**
       * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
       * @return Whether the finish field is set.
       */
      @java.lang.Override
      public boolean hasFinish() {
        return entryCase_ == 3;
      }
      /**
       * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
       * @return The finish.
       */
      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry getFinish() {
        if (finishBuilder_ == null) {
          if (entryCase_ == 3) {
            return (com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry) entry_;
          }
          return com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.getDefaultInstance();
        } else {
          if (entryCase_ == 3) {
            return finishBuilder_.getMessage();
          }
          return com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.getDefaultInstance();
        }
      }
      /**
       * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
       */
      public Builder setFinish(com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry value) {
        if (finishBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          entry_ = value;
          onChanged();
        } else {
          finishBuilder_.setMessage(value);
        }
        entryCase_ = 3;
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
       */
      public Builder setFinish(
          com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.Builder builderForValue) {
        if (finishBuilder_ == null) {
          entry_ = builderForValue.build();
          onChanged();
        } else {
          finishBuilder_.setMessage(builderForValue.build());
        }
        entryCase_ = 3;
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
       */
      public Builder mergeFinish(com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry value) {
        if (finishBuilder_ == null) {
          if (entryCase_ == 3 &&
              entry_ != com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.getDefaultInstance()) {
            entry_ = com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.newBuilder((com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry) entry_)
                .mergeFrom(value).buildPartial();
          } else {
            entry_ = value;
          }
          onChanged();
        } else {
          if (entryCase_ == 3) {
            finishBuilder_.mergeFrom(value);
          } else {
            finishBuilder_.setMessage(value);
          }
        }
        entryCase_ = 3;
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
       */
      public Builder clearFinish() {
        if (finishBuilder_ == null) {
          if (entryCase_ == 3) {
            entryCase_ = 0;
            entry_ = null;
            onChanged();
          }
        } else {
          if (entryCase_ == 3) {
            entryCase_ = 0;
            entry_ = null;
          }
          finishBuilder_.clear();
        }
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.Builder getFinishBuilder() {
        return getFinishFieldBuilder().getBuilder();
      }
      /**
       * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
       */
      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntryOrBuilder getFinishOrBuilder() {
        if ((entryCase_ == 3) && (finishBuilder_ != null)) {
          return finishBuilder_.getMessageOrBuilder();
        } else {
          if (entryCase_ == 3) {
            return (com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry) entry_;
          }
          return com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.getDefaultInstance();
        }
      }
      /**
       * .com.onthegomap.planetiler.proto.FinishEntry finish = 3;
       */
      private com.google.protobuf.SingleFieldBuilder<
          com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry, com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntryOrBuilder> 
          getFinishFieldBuilder() {
        if (finishBuilder_ == null) {
          if (!(entryCase_ == 3)) {
            entry_ = com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.getDefaultInstance();
          }
          finishBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry, com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntryOrBuilder>(
                  (com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry) entry_,
                  getParentForChildren(),
                  isClean());
          entry_ = null;
        }
        entryCase_ = 3;
        onChanged();
        return finishBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:com.onthegomap.planetiler.proto.Entry)
    }

    // @@protoc_insertion_point(class_scope:com.onthegomap.planetiler.proto.Entry)
    private static final com.onthegomap.planetiler.proto.StreamArchiveProto.Entry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.onthegomap.planetiler.proto.StreamArchiveProto.Entry();
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Entry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public Entry parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.Entry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TileEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.onthegomap.planetiler.proto.TileEntry)
      com.google.protobuf.MessageOrBuilder {

    /**
     * int32 x = 1;
     * @return The x.
     */
    int getX();

    /**
     * int32 y = 2;
     * @return The y.
     */
    int getY();

    /**
     * int32 z = 3;
     * @return The z.
     */
    int getZ();

    /**
     * bytes encoded_data = 4;
     * @return The encodedData.
     */
    com.google.protobuf.ByteString getEncodedData();
  }
  /**
   * Protobuf type {@code com.onthegomap.planetiler.proto.TileEntry}
   */
  public static final class TileEntry extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.onthegomap.planetiler.proto.TileEntry)
      TileEntryOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 28,
        /* patch= */ 1,
        /* suffix= */ "",
        TileEntry.class.getName());
    }
    // Use TileEntry.newBuilder() to construct.
    private TileEntry(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
    }
    private TileEntry() {
      encodedData_ = com.google.protobuf.ByteString.EMPTY;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_TileEntry_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_TileEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.class, com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.Builder.class);
    }

    public static final int X_FIELD_NUMBER = 1;
    private int x_ = 0;
    /**
     * int32 x = 1;
     * @return The x.
     */
    @java.lang.Override
    public int getX() {
      return x_;
    }

    public static final int Y_FIELD_NUMBER = 2;
    private int y_ = 0;
    /**
     * int32 y = 2;
     * @return The y.
     */
    @java.lang.Override
    public int getY() {
      return y_;
    }

    public static final int Z_FIELD_NUMBER = 3;
    private int z_ = 0;
    /**
     * int32 z = 3;
     * @return The z.
     */
    @java.lang.Override
    public int getZ() {
      return z_;
    }

    public static final int ENCODED_DATA_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString encodedData_ = com.google.protobuf.ByteString.EMPTY;
    /**
     * bytes encoded_data = 4;
     * @return The encodedData.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getEncodedData() {
      return encodedData_;
    }

    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 (x_ != 0) {
        output.writeInt32(1, x_);
      }
      if (y_ != 0) {
        output.writeInt32(2, y_);
      }
      if (z_ != 0) {
        output.writeInt32(3, z_);
      }
      if (!encodedData_.isEmpty()) {
        output.writeBytes(4, encodedData_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (x_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, x_);
      }
      if (y_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, y_);
      }
      if (z_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, z_);
      }
      if (!encodedData_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, encodedData_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry)) {
        return super.equals(obj);
      }
      com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry other = (com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry) obj;

      if (getX()
          != other.getX()) return false;
      if (getY()
          != other.getY()) return false;
      if (getZ()
          != other.getZ()) return false;
      if (!getEncodedData()
          .equals(other.getEncodedData())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + X_FIELD_NUMBER;
      hash = (53 * hash) + getX();
      hash = (37 * hash) + Y_FIELD_NUMBER;
      hash = (53 * hash) + getY();
      hash = (37 * hash) + Z_FIELD_NUMBER;
      hash = (53 * hash) + getZ();
      hash = (37 * hash) + ENCODED_DATA_FIELD_NUMBER;
      hash = (53 * hash) + getEncodedData().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.onthegomap.planetiler.proto.TileEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:com.onthegomap.planetiler.proto.TileEntry)
        com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_TileEntry_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_TileEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.class, com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.Builder.class);
      }

      // Construct using com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        x_ = 0;
        y_ = 0;
        z_ = 0;
        encodedData_ = com.google.protobuf.ByteString.EMPTY;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_TileEntry_descriptor;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry getDefaultInstanceForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.getDefaultInstance();
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry build() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry buildPartial() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry result = new com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.x_ = x_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.y_ = y_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.z_ = z_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.encodedData_ = encodedData_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry) {
          return mergeFrom((com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry other) {
        if (other == com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry.getDefaultInstance()) return this;
        if (other.getX() != 0) {
          setX(other.getX());
        }
        if (other.getY() != 0) {
          setY(other.getY());
        }
        if (other.getZ() != 0) {
          setZ(other.getZ());
        }
        if (other.getEncodedData() != com.google.protobuf.ByteString.EMPTY) {
          setEncodedData(other.getEncodedData());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                x_ = input.readInt32();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              case 16: {
                y_ = input.readInt32();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 24: {
                z_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              case 34: {
                encodedData_ = input.readBytes();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int x_ ;
      /**
       * int32 x = 1;
       * @return The x.
       */
      @java.lang.Override
      public int getX() {
        return x_;
      }
      /**
       * int32 x = 1;
       * @param value The x to set.
       * @return This builder for chaining.
       */
      public Builder setX(int value) {

        x_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * int32 x = 1;
       * @return This builder for chaining.
       */
      public Builder clearX() {
        bitField0_ = (bitField0_ & ~0x00000001);
        x_ = 0;
        onChanged();
        return this;
      }

      private int y_ ;
      /**
       * int32 y = 2;
       * @return The y.
       */
      @java.lang.Override
      public int getY() {
        return y_;
      }
      /**
       * int32 y = 2;
       * @param value The y to set.
       * @return This builder for chaining.
       */
      public Builder setY(int value) {

        y_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * int32 y = 2;
       * @return This builder for chaining.
       */
      public Builder clearY() {
        bitField0_ = (bitField0_ & ~0x00000002);
        y_ = 0;
        onChanged();
        return this;
      }

      private int z_ ;
      /**
       * int32 z = 3;
       * @return The z.
       */
      @java.lang.Override
      public int getZ() {
        return z_;
      }
      /**
       * int32 z = 3;
       * @param value The z to set.
       * @return This builder for chaining.
       */
      public Builder setZ(int value) {

        z_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * int32 z = 3;
       * @return This builder for chaining.
       */
      public Builder clearZ() {
        bitField0_ = (bitField0_ & ~0x00000004);
        z_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString encodedData_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes encoded_data = 4;
       * @return The encodedData.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getEncodedData() {
        return encodedData_;
      }
      /**
       * bytes encoded_data = 4;
       * @param value The encodedData to set.
       * @return This builder for chaining.
       */
      public Builder setEncodedData(com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        encodedData_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * bytes encoded_data = 4;
       * @return This builder for chaining.
       */
      public Builder clearEncodedData() {
        bitField0_ = (bitField0_ & ~0x00000008);
        encodedData_ = getDefaultInstance().getEncodedData();
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:com.onthegomap.planetiler.proto.TileEntry)
    }

    // @@protoc_insertion_point(class_scope:com.onthegomap.planetiler.proto.TileEntry)
    private static final com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry();
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public TileEntry parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.TileEntry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface InitializationEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.onthegomap.planetiler.proto.InitializationEntry)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code com.onthegomap.planetiler.proto.InitializationEntry}
   */
  public static final class InitializationEntry extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.onthegomap.planetiler.proto.InitializationEntry)
      InitializationEntryOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 28,
        /* patch= */ 1,
        /* suffix= */ "",
        InitializationEntry.class.getName());
    }
    // Use InitializationEntry.newBuilder() to construct.
    private InitializationEntry(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
    }
    private InitializationEntry() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_InitializationEntry_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_InitializationEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.class, com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.Builder.class);
    }

    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 {
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry)) {
        return super.equals(obj);
      }
      com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry other = (com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.onthegomap.planetiler.proto.InitializationEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:com.onthegomap.planetiler.proto.InitializationEntry)
        com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_InitializationEntry_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_InitializationEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.class, com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.Builder.class);
      }

      // Construct using com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_InitializationEntry_descriptor;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry getDefaultInstanceForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.getDefaultInstance();
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry build() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry buildPartial() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry result = new com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry) {
          return mergeFrom((com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry other) {
        if (other == com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      // @@protoc_insertion_point(builder_scope:com.onthegomap.planetiler.proto.InitializationEntry)
    }

    // @@protoc_insertion_point(class_scope:com.onthegomap.planetiler.proto.InitializationEntry)
    private static final com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry();
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public InitializationEntry parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.InitializationEntry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface FinishEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.onthegomap.planetiler.proto.FinishEntry)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
     * @return Whether the metadata field is set.
     */
    boolean hasMetadata();
    /**
     * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
     * @return The metadata.
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata getMetadata();
    /**
     * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.MetadataOrBuilder getMetadataOrBuilder();
  }
  /**
   * Protobuf type {@code com.onthegomap.planetiler.proto.FinishEntry}
   */
  public static final class FinishEntry extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.onthegomap.planetiler.proto.FinishEntry)
      FinishEntryOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 28,
        /* patch= */ 1,
        /* suffix= */ "",
        FinishEntry.class.getName());
    }
    // Use FinishEntry.newBuilder() to construct.
    private FinishEntry(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
    }
    private FinishEntry() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_FinishEntry_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_FinishEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.class, com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.Builder.class);
    }

    private int bitField0_;
    public static final int METADATA_FIELD_NUMBER = 1;
    private com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata metadata_;
    /**
     * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
     * @return Whether the metadata field is set.
     */
    @java.lang.Override
    public boolean hasMetadata() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
     * @return The metadata.
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata getMetadata() {
      return metadata_ == null ? com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.getDefaultInstance() : metadata_;
    }
    /**
     * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.MetadataOrBuilder getMetadataOrBuilder() {
      return metadata_ == null ? com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.getDefaultInstance() : metadata_;
    }

    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 (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(1, getMetadata());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMetadata());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry)) {
        return super.equals(obj);
      }
      com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry other = (com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry) obj;

      if (hasMetadata() != other.hasMetadata()) return false;
      if (hasMetadata()) {
        if (!getMetadata()
            .equals(other.getMetadata())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMetadata()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetadata().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.onthegomap.planetiler.proto.FinishEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:com.onthegomap.planetiler.proto.FinishEntry)
        com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_FinishEntry_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_FinishEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.class, com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.Builder.class);
      }

      // Construct using com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getMetadataFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_FinishEntry_descriptor;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry getDefaultInstanceForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.getDefaultInstance();
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry build() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry buildPartial() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry result = new com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.metadata_ = metadataBuilder_ == null
              ? metadata_
              : metadataBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry) {
          return mergeFrom((com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry other) {
        if (other == com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry.getDefaultInstance()) return this;
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getMetadataFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata metadata_;
      private com.google.protobuf.SingleFieldBuilder<
          com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata, com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.MetadataOrBuilder> metadataBuilder_;
      /**
       * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
       * @return Whether the metadata field is set.
       */
      public boolean hasMetadata() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
       * @return The metadata.
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_ == null ? com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.getDefaultInstance() : metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      /**
       * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
       */
      public Builder setMetadata(com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metadata_ = value;
        } else {
          metadataBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
       */
      public Builder setMetadata(
          com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          metadata_ = builderForValue.build();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
       */
      public Builder mergeMetadata(com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata value) {
        if (metadataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            metadata_ != null &&
            metadata_ != com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.getDefaultInstance()) {
            getMetadataBuilder().mergeFrom(value);
          } else {
            metadata_ = value;
          }
        } else {
          metadataBuilder_.mergeFrom(value);
        }
        if (metadata_ != null) {
          bitField0_ |= 0x00000001;
          onChanged();
        }
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
       */
      public Builder clearMetadata() {
        bitField0_ = (bitField0_ & ~0x00000001);
        metadata_ = null;
        if (metadataBuilder_ != null) {
          metadataBuilder_.dispose();
          metadataBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.Builder getMetadataBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      /**
       * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.MetadataOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_ == null ?
              com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.getDefaultInstance() : metadata_;
        }
      }
      /**
       * .com.onthegomap.planetiler.proto.Metadata metadata = 1;
       */
      private com.google.protobuf.SingleFieldBuilder<
          com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata, com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.MetadataOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata, com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.MetadataOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      // @@protoc_insertion_point(builder_scope:com.onthegomap.planetiler.proto.FinishEntry)
    }

    // @@protoc_insertion_point(class_scope:com.onthegomap.planetiler.proto.FinishEntry)
    private static final com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry();
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public FinishEntry parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.FinishEntry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MetadataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.onthegomap.planetiler.proto.Metadata)
      com.google.protobuf.MessageOrBuilder {

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

    /**
     * string description = 2;
     * @return The description.
     */
    java.lang.String getDescription();
    /**
     * string description = 2;
     * @return The bytes for description.
     */
    com.google.protobuf.ByteString
        getDescriptionBytes();

    /**
     * string attribution = 3;
     * @return The attribution.
     */
    java.lang.String getAttribution();
    /**
     * string attribution = 3;
     * @return The bytes for attribution.
     */
    com.google.protobuf.ByteString
        getAttributionBytes();

    /**
     * string version = 4;
     * @return The version.
     */
    java.lang.String getVersion();
    /**
     * string version = 4;
     * @return The bytes for version.
     */
    com.google.protobuf.ByteString
        getVersionBytes();

    /**
     * string type = 5;
     * @return The type.
     */
    java.lang.String getType();
    /**
     * string type = 5;
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * string format = 6;
     * @return The format.
     */
    java.lang.String getFormat();
    /**
     * string format = 6;
     * @return The bytes for format.
     */
    com.google.protobuf.ByteString
        getFormatBytes();

    /**
     * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
     * @return Whether the bounds field is set.
     */
    boolean hasBounds();
    /**
     * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
     * @return The bounds.
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope getBounds();
    /**
     * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.EnvelopeOrBuilder getBoundsOrBuilder();

    /**
     * .com.onthegomap.planetiler.proto.Coordinate center = 8;
     * @return Whether the center field is set.
     */
    boolean hasCenter();
    /**
     * .com.onthegomap.planetiler.proto.Coordinate center = 8;
     * @return The center.
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate getCenter();
    /**
     * .com.onthegomap.planetiler.proto.Coordinate center = 8;
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.CoordinateOrBuilder getCenterOrBuilder();

    /**
     * int32 min_zoom = 9;
     * @return The minZoom.
     */
    int getMinZoom();

    /**
     * int32 max_zoom = 10;
     * @return The maxZoom.
     */
    int getMaxZoom();

    /**
     * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
     */
    java.util.List 
        getVectorLayersList();
    /**
     * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer getVectorLayers(int index);
    /**
     * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
     */
    int getVectorLayersCount();
    /**
     * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
     */
    java.util.List 
        getVectorLayersOrBuilderList();
    /**
     * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayerOrBuilder getVectorLayersOrBuilder(
        int index);

    /**
     * map<string, string> others = 12;
     */
    int getOthersCount();
    /**
     * map<string, string> others = 12;
     */
    boolean containsOthers(
        java.lang.String key);
    /**
     * Use {@link #getOthersMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map
    getOthers();
    /**
     * map<string, string> others = 12;
     */
    java.util.Map
    getOthersMap();
    /**
     * map<string, string> others = 12;
     */
    /* nullable */
java.lang.String getOthersOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * map<string, string> others = 12;
     */
    java.lang.String getOthersOrThrow(
        java.lang.String key);

    /**
     * .com.onthegomap.planetiler.proto.TileCompression tile_compression = 13;
     * @return The enum numeric value on the wire for tileCompression.
     */
    int getTileCompressionValue();
    /**
     * .com.onthegomap.planetiler.proto.TileCompression tile_compression = 13;
     * @return The tileCompression.
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.TileCompression getTileCompression();
  }
  /**
   * Protobuf type {@code com.onthegomap.planetiler.proto.Metadata}
   */
  public static final class Metadata extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.onthegomap.planetiler.proto.Metadata)
      MetadataOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 28,
        /* patch= */ 1,
        /* suffix= */ "",
        Metadata.class.getName());
    }
    // Use Metadata.newBuilder() to construct.
    private Metadata(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
    }
    private Metadata() {
      name_ = "";
      description_ = "";
      attribution_ = "";
      version_ = "";
      type_ = "";
      format_ = "";
      vectorLayers_ = java.util.Collections.emptyList();
      tileCompression_ = 0;
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Metadata_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 12:
          return internalGetOthers();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Metadata_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.class, com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.Builder.class);
    }

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

    public static final int DESCRIPTION_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private volatile java.lang.Object description_ = "";
    /**
     * string description = 2;
     * @return The description.
     */
    @java.lang.Override
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        description_ = s;
        return s;
      }
    }
    /**
     * string description = 2;
     * @return The bytes for description.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ATTRIBUTION_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object attribution_ = "";
    /**
     * string attribution = 3;
     * @return The attribution.
     */
    @java.lang.Override
    public java.lang.String getAttribution() {
      java.lang.Object ref = attribution_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        attribution_ = s;
        return s;
      }
    }
    /**
     * string attribution = 3;
     * @return The bytes for attribution.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAttributionBytes() {
      java.lang.Object ref = attribution_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        attribution_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object version_ = "";
    /**
     * string version = 4;
     * @return The version.
     */
    @java.lang.Override
    public java.lang.String getVersion() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        version_ = s;
        return s;
      }
    }
    /**
     * string version = 4;
     * @return The bytes for version.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVersionBytes() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TYPE_FIELD_NUMBER = 5;
    @SuppressWarnings("serial")
    private volatile java.lang.Object type_ = "";
    /**
     * string type = 5;
     * @return The type.
     */
    @java.lang.Override
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        type_ = s;
        return s;
      }
    }
    /**
     * string type = 5;
     * @return The bytes for type.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FORMAT_FIELD_NUMBER = 6;
    @SuppressWarnings("serial")
    private volatile java.lang.Object format_ = "";
    /**
     * string format = 6;
     * @return The format.
     */
    @java.lang.Override
    public java.lang.String getFormat() {
      java.lang.Object ref = format_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        format_ = s;
        return s;
      }
    }
    /**
     * string format = 6;
     * @return The bytes for format.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFormatBytes() {
      java.lang.Object ref = format_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        format_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int BOUNDS_FIELD_NUMBER = 7;
    private com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope bounds_;
    /**
     * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
     * @return Whether the bounds field is set.
     */
    @java.lang.Override
    public boolean hasBounds() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
     * @return The bounds.
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope getBounds() {
      return bounds_ == null ? com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.getDefaultInstance() : bounds_;
    }
    /**
     * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.EnvelopeOrBuilder getBoundsOrBuilder() {
      return bounds_ == null ? com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.getDefaultInstance() : bounds_;
    }

    public static final int CENTER_FIELD_NUMBER = 8;
    private com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate center_;
    /**
     * .com.onthegomap.planetiler.proto.Coordinate center = 8;
     * @return Whether the center field is set.
     */
    @java.lang.Override
    public boolean hasCenter() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * .com.onthegomap.planetiler.proto.Coordinate center = 8;
     * @return The center.
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate getCenter() {
      return center_ == null ? com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.getDefaultInstance() : center_;
    }
    /**
     * .com.onthegomap.planetiler.proto.Coordinate center = 8;
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.CoordinateOrBuilder getCenterOrBuilder() {
      return center_ == null ? com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.getDefaultInstance() : center_;
    }

    public static final int MIN_ZOOM_FIELD_NUMBER = 9;
    private int minZoom_ = 0;
    /**
     * int32 min_zoom = 9;
     * @return The minZoom.
     */
    @java.lang.Override
    public int getMinZoom() {
      return minZoom_;
    }

    public static final int MAX_ZOOM_FIELD_NUMBER = 10;
    private int maxZoom_ = 0;
    /**
     * int32 max_zoom = 10;
     * @return The maxZoom.
     */
    @java.lang.Override
    public int getMaxZoom() {
      return maxZoom_;
    }

    public static final int VECTOR_LAYERS_FIELD_NUMBER = 11;
    @SuppressWarnings("serial")
    private java.util.List vectorLayers_;
    /**
     * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
     */
    @java.lang.Override
    public java.util.List getVectorLayersList() {
      return vectorLayers_;
    }
    /**
     * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
     */
    @java.lang.Override
    public java.util.List 
        getVectorLayersOrBuilderList() {
      return vectorLayers_;
    }
    /**
     * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
     */
    @java.lang.Override
    public int getVectorLayersCount() {
      return vectorLayers_.size();
    }
    /**
     * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer getVectorLayers(int index) {
      return vectorLayers_.get(index);
    }
    /**
     * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayerOrBuilder getVectorLayersOrBuilder(
        int index) {
      return vectorLayers_.get(index);
    }

    public static final int OTHERS_FIELD_NUMBER = 12;
    private static final class OthersDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .newDefaultInstance(
                  com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Metadata_OthersEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> others_;
    private com.google.protobuf.MapField
    internalGetOthers() {
      if (others_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            OthersDefaultEntryHolder.defaultEntry);
      }
      return others_;
    }
    public int getOthersCount() {
      return internalGetOthers().getMap().size();
    }
    /**
     * map<string, string> others = 12;
     */
    @java.lang.Override
    public boolean containsOthers(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetOthers().getMap().containsKey(key);
    }
    /**
     * Use {@link #getOthersMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map getOthers() {
      return getOthersMap();
    }
    /**
     * map<string, string> others = 12;
     */
    @java.lang.Override
    public java.util.Map getOthersMap() {
      return internalGetOthers().getMap();
    }
    /**
     * map<string, string> others = 12;
     */
    @java.lang.Override
    public /* nullable */
java.lang.String getOthersOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map map =
          internalGetOthers().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * map<string, string> others = 12;
     */
    @java.lang.Override
    public java.lang.String getOthersOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map map =
          internalGetOthers().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int TILE_COMPRESSION_FIELD_NUMBER = 13;
    private int tileCompression_ = 0;
    /**
     * .com.onthegomap.planetiler.proto.TileCompression tile_compression = 13;
     * @return The enum numeric value on the wire for tileCompression.
     */
    @java.lang.Override public int getTileCompressionValue() {
      return tileCompression_;
    }
    /**
     * .com.onthegomap.planetiler.proto.TileCompression tile_compression = 13;
     * @return The tileCompression.
     */
    @java.lang.Override public com.onthegomap.planetiler.proto.StreamArchiveProto.TileCompression getTileCompression() {
      com.onthegomap.planetiler.proto.StreamArchiveProto.TileCompression result = com.onthegomap.planetiler.proto.StreamArchiveProto.TileCompression.forNumber(tileCompression_);
      return result == null ? com.onthegomap.planetiler.proto.StreamArchiveProto.TileCompression.UNRECOGNIZED : result;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, name_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(description_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 2, description_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(attribution_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, attribution_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(version_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 4, version_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(type_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 5, type_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(format_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 6, format_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        output.writeMessage(7, getBounds());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeMessage(8, getCenter());
      }
      if (minZoom_ != 0) {
        output.writeInt32(9, minZoom_);
      }
      if (maxZoom_ != 0) {
        output.writeInt32(10, maxZoom_);
      }
      for (int i = 0; i < vectorLayers_.size(); i++) {
        output.writeMessage(11, vectorLayers_.get(i));
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetOthers(),
          OthersDefaultEntryHolder.defaultEntry,
          12);
      if (tileCompression_ != com.onthegomap.planetiler.proto.StreamArchiveProto.TileCompression.TILE_COMPRESSION_UNSPECIFIED.getNumber()) {
        output.writeEnum(13, tileCompression_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, name_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(description_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(2, description_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(attribution_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, attribution_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(version_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(4, version_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(type_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(5, type_);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(format_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(6, format_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getBounds());
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getCenter());
      }
      if (minZoom_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(9, minZoom_);
      }
      if (maxZoom_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(10, maxZoom_);
      }
      for (int i = 0; i < vectorLayers_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, vectorLayers_.get(i));
      }
      for (java.util.Map.Entry entry
           : internalGetOthers().getMap().entrySet()) {
        com.google.protobuf.MapEntry
        others__ = OthersDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(12, others__);
      }
      if (tileCompression_ != com.onthegomap.planetiler.proto.StreamArchiveProto.TileCompression.TILE_COMPRESSION_UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(13, tileCompression_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata)) {
        return super.equals(obj);
      }
      com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata other = (com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getDescription()
          .equals(other.getDescription())) return false;
      if (!getAttribution()
          .equals(other.getAttribution())) return false;
      if (!getVersion()
          .equals(other.getVersion())) return false;
      if (!getType()
          .equals(other.getType())) return false;
      if (!getFormat()
          .equals(other.getFormat())) return false;
      if (hasBounds() != other.hasBounds()) return false;
      if (hasBounds()) {
        if (!getBounds()
            .equals(other.getBounds())) return false;
      }
      if (hasCenter() != other.hasCenter()) return false;
      if (hasCenter()) {
        if (!getCenter()
            .equals(other.getCenter())) return false;
      }
      if (getMinZoom()
          != other.getMinZoom()) return false;
      if (getMaxZoom()
          != other.getMaxZoom()) return false;
      if (!getVectorLayersList()
          .equals(other.getVectorLayersList())) return false;
      if (!internalGetOthers().equals(
          other.internalGetOthers())) return false;
      if (tileCompression_ != other.tileCompression_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
      hash = (53 * hash) + getDescription().hashCode();
      hash = (37 * hash) + ATTRIBUTION_FIELD_NUMBER;
      hash = (53 * hash) + getAttribution().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getType().hashCode();
      hash = (37 * hash) + FORMAT_FIELD_NUMBER;
      hash = (53 * hash) + getFormat().hashCode();
      if (hasBounds()) {
        hash = (37 * hash) + BOUNDS_FIELD_NUMBER;
        hash = (53 * hash) + getBounds().hashCode();
      }
      if (hasCenter()) {
        hash = (37 * hash) + CENTER_FIELD_NUMBER;
        hash = (53 * hash) + getCenter().hashCode();
      }
      hash = (37 * hash) + MIN_ZOOM_FIELD_NUMBER;
      hash = (53 * hash) + getMinZoom();
      hash = (37 * hash) + MAX_ZOOM_FIELD_NUMBER;
      hash = (53 * hash) + getMaxZoom();
      if (getVectorLayersCount() > 0) {
        hash = (37 * hash) + VECTOR_LAYERS_FIELD_NUMBER;
        hash = (53 * hash) + getVectorLayersList().hashCode();
      }
      if (!internalGetOthers().getMap().isEmpty()) {
        hash = (37 * hash) + OTHERS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetOthers().hashCode();
      }
      hash = (37 * hash) + TILE_COMPRESSION_FIELD_NUMBER;
      hash = (53 * hash) + tileCompression_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.onthegomap.planetiler.proto.Metadata}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:com.onthegomap.planetiler.proto.Metadata)
        com.onthegomap.planetiler.proto.StreamArchiveProto.MetadataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Metadata_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 12:
            return internalGetOthers();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 12:
            return internalGetMutableOthers();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Metadata_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.class, com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.Builder.class);
      }

      // Construct using com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessage
                .alwaysUseFieldBuilders) {
          getBoundsFieldBuilder();
          getCenterFieldBuilder();
          getVectorLayersFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        name_ = "";
        description_ = "";
        attribution_ = "";
        version_ = "";
        type_ = "";
        format_ = "";
        bounds_ = null;
        if (boundsBuilder_ != null) {
          boundsBuilder_.dispose();
          boundsBuilder_ = null;
        }
        center_ = null;
        if (centerBuilder_ != null) {
          centerBuilder_.dispose();
          centerBuilder_ = null;
        }
        minZoom_ = 0;
        maxZoom_ = 0;
        if (vectorLayersBuilder_ == null) {
          vectorLayers_ = java.util.Collections.emptyList();
        } else {
          vectorLayers_ = null;
          vectorLayersBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000400);
        internalGetMutableOthers().clear();
        tileCompression_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Metadata_descriptor;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata getDefaultInstanceForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.getDefaultInstance();
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata build() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata buildPartial() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata result = new com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata result) {
        if (vectorLayersBuilder_ == null) {
          if (((bitField0_ & 0x00000400) != 0)) {
            vectorLayers_ = java.util.Collections.unmodifiableList(vectorLayers_);
            bitField0_ = (bitField0_ & ~0x00000400);
          }
          result.vectorLayers_ = vectorLayers_;
        } else {
          result.vectorLayers_ = vectorLayersBuilder_.build();
        }
      }

      private void buildPartial0(com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.name_ = name_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.description_ = description_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.attribution_ = attribution_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.version_ = version_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.type_ = type_;
        }
        if (((from_bitField0_ & 0x00000020) != 0)) {
          result.format_ = format_;
        }
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000040) != 0)) {
          result.bounds_ = boundsBuilder_ == null
              ? bounds_
              : boundsBuilder_.build();
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000080) != 0)) {
          result.center_ = centerBuilder_ == null
              ? center_
              : centerBuilder_.build();
          to_bitField0_ |= 0x00000002;
        }
        if (((from_bitField0_ & 0x00000100) != 0)) {
          result.minZoom_ = minZoom_;
        }
        if (((from_bitField0_ & 0x00000200) != 0)) {
          result.maxZoom_ = maxZoom_;
        }
        if (((from_bitField0_ & 0x00000800) != 0)) {
          result.others_ = internalGetOthers();
          result.others_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00001000) != 0)) {
          result.tileCompression_ = tileCompression_;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata) {
          return mergeFrom((com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata other) {
        if (other == com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (!other.getDescription().isEmpty()) {
          description_ = other.description_;
          bitField0_ |= 0x00000002;
          onChanged();
        }
        if (!other.getAttribution().isEmpty()) {
          attribution_ = other.attribution_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          bitField0_ |= 0x00000008;
          onChanged();
        }
        if (!other.getType().isEmpty()) {
          type_ = other.type_;
          bitField0_ |= 0x00000010;
          onChanged();
        }
        if (!other.getFormat().isEmpty()) {
          format_ = other.format_;
          bitField0_ |= 0x00000020;
          onChanged();
        }
        if (other.hasBounds()) {
          mergeBounds(other.getBounds());
        }
        if (other.hasCenter()) {
          mergeCenter(other.getCenter());
        }
        if (other.getMinZoom() != 0) {
          setMinZoom(other.getMinZoom());
        }
        if (other.getMaxZoom() != 0) {
          setMaxZoom(other.getMaxZoom());
        }
        if (vectorLayersBuilder_ == null) {
          if (!other.vectorLayers_.isEmpty()) {
            if (vectorLayers_.isEmpty()) {
              vectorLayers_ = other.vectorLayers_;
              bitField0_ = (bitField0_ & ~0x00000400);
            } else {
              ensureVectorLayersIsMutable();
              vectorLayers_.addAll(other.vectorLayers_);
            }
            onChanged();
          }
        } else {
          if (!other.vectorLayers_.isEmpty()) {
            if (vectorLayersBuilder_.isEmpty()) {
              vectorLayersBuilder_.dispose();
              vectorLayersBuilder_ = null;
              vectorLayers_ = other.vectorLayers_;
              bitField0_ = (bitField0_ & ~0x00000400);
              vectorLayersBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getVectorLayersFieldBuilder() : null;
            } else {
              vectorLayersBuilder_.addAllMessages(other.vectorLayers_);
            }
          }
        }
        internalGetMutableOthers().mergeFrom(
            other.internalGetOthers());
        bitField0_ |= 0x00000800;
        if (other.tileCompression_ != 0) {
          setTileCompressionValue(other.getTileCompressionValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                description_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                attribution_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 34: {
                version_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000008;
                break;
              } // case 34
              case 42: {
                type_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
              case 50: {
                format_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
              case 58: {
                input.readMessage(
                    getBoundsFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 58
              case 66: {
                input.readMessage(
                    getCenterFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000080;
                break;
              } // case 66
              case 72: {
                minZoom_ = input.readInt32();
                bitField0_ |= 0x00000100;
                break;
              } // case 72
              case 80: {
                maxZoom_ = input.readInt32();
                bitField0_ |= 0x00000200;
                break;
              } // case 80
              case 90: {
                com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer m =
                    input.readMessage(
                        com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.parser(),
                        extensionRegistry);
                if (vectorLayersBuilder_ == null) {
                  ensureVectorLayersIsMutable();
                  vectorLayers_.add(m);
                } else {
                  vectorLayersBuilder_.addMessage(m);
                }
                break;
              } // case 90
              case 98: {
                com.google.protobuf.MapEntry
                others__ = input.readMessage(
                    OthersDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableOthers().getMutableMap().put(
                    others__.getKey(), others__.getValue());
                bitField0_ |= 0x00000800;
                break;
              } // case 98
              case 104: {
                tileCompression_ = input.readEnum();
                bitField0_ |= 0x00001000;
                break;
              } // case 104
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

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

      private java.lang.Object description_ = "";
      /**
       * string description = 2;
       * @return The description.
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          description_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string description = 2;
       * @return The bytes for description.
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string description = 2;
       * @param value The description to set.
       * @return This builder for chaining.
       */
      public Builder setDescription(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        description_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * string description = 2;
       * @return This builder for chaining.
       */
      public Builder clearDescription() {
        description_ = getDefaultInstance().getDescription();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * string description = 2;
       * @param value The bytes for description to set.
       * @return This builder for chaining.
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        description_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private java.lang.Object attribution_ = "";
      /**
       * string attribution = 3;
       * @return The attribution.
       */
      public java.lang.String getAttribution() {
        java.lang.Object ref = attribution_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          attribution_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string attribution = 3;
       * @return The bytes for attribution.
       */
      public com.google.protobuf.ByteString
          getAttributionBytes() {
        java.lang.Object ref = attribution_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          attribution_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string attribution = 3;
       * @param value The attribution to set.
       * @return This builder for chaining.
       */
      public Builder setAttribution(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        attribution_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * string attribution = 3;
       * @return This builder for chaining.
       */
      public Builder clearAttribution() {
        attribution_ = getDefaultInstance().getAttribution();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * string attribution = 3;
       * @param value The bytes for attribution to set.
       * @return This builder for chaining.
       */
      public Builder setAttributionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        attribution_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private java.lang.Object version_ = "";
      /**
       * string version = 4;
       * @return The version.
       */
      public java.lang.String getVersion() {
        java.lang.Object ref = version_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string version = 4;
       * @return The bytes for version.
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        java.lang.Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string version = 4;
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        version_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * string version = 4;
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        version_ = getDefaultInstance().getVersion();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * string version = 4;
       * @param value The bytes for version to set.
       * @return This builder for chaining.
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        version_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * string type = 5;
       * @return The type.
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          type_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string type = 5;
       * @return The bytes for type.
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string type = 5;
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        type_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * string type = 5;
       * @return This builder for chaining.
       */
      public Builder clearType() {
        type_ = getDefaultInstance().getType();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * string type = 5;
       * @param value The bytes for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        type_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }

      private java.lang.Object format_ = "";
      /**
       * string format = 6;
       * @return The format.
       */
      public java.lang.String getFormat() {
        java.lang.Object ref = format_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          format_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string format = 6;
       * @return The bytes for format.
       */
      public com.google.protobuf.ByteString
          getFormatBytes() {
        java.lang.Object ref = format_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          format_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string format = 6;
       * @param value The format to set.
       * @return This builder for chaining.
       */
      public Builder setFormat(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        format_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }
      /**
       * string format = 6;
       * @return This builder for chaining.
       */
      public Builder clearFormat() {
        format_ = getDefaultInstance().getFormat();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
        return this;
      }
      /**
       * string format = 6;
       * @param value The bytes for format to set.
       * @return This builder for chaining.
       */
      public Builder setFormatBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        format_ = value;
        bitField0_ |= 0x00000020;
        onChanged();
        return this;
      }

      private com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope bounds_;
      private com.google.protobuf.SingleFieldBuilder<
          com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope, com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.EnvelopeOrBuilder> boundsBuilder_;
      /**
       * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
       * @return Whether the bounds field is set.
       */
      public boolean hasBounds() {
        return ((bitField0_ & 0x00000040) != 0);
      }
      /**
       * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
       * @return The bounds.
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope getBounds() {
        if (boundsBuilder_ == null) {
          return bounds_ == null ? com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.getDefaultInstance() : bounds_;
        } else {
          return boundsBuilder_.getMessage();
        }
      }
      /**
       * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
       */
      public Builder setBounds(com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope value) {
        if (boundsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          bounds_ = value;
        } else {
          boundsBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
       */
      public Builder setBounds(
          com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.Builder builderForValue) {
        if (boundsBuilder_ == null) {
          bounds_ = builderForValue.build();
        } else {
          boundsBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000040;
        onChanged();
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
       */
      public Builder mergeBounds(com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope value) {
        if (boundsBuilder_ == null) {
          if (((bitField0_ & 0x00000040) != 0) &&
            bounds_ != null &&
            bounds_ != com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.getDefaultInstance()) {
            getBoundsBuilder().mergeFrom(value);
          } else {
            bounds_ = value;
          }
        } else {
          boundsBuilder_.mergeFrom(value);
        }
        if (bounds_ != null) {
          bitField0_ |= 0x00000040;
          onChanged();
        }
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
       */
      public Builder clearBounds() {
        bitField0_ = (bitField0_ & ~0x00000040);
        bounds_ = null;
        if (boundsBuilder_ != null) {
          boundsBuilder_.dispose();
          boundsBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.Builder getBoundsBuilder() {
        bitField0_ |= 0x00000040;
        onChanged();
        return getBoundsFieldBuilder().getBuilder();
      }
      /**
       * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.EnvelopeOrBuilder getBoundsOrBuilder() {
        if (boundsBuilder_ != null) {
          return boundsBuilder_.getMessageOrBuilder();
        } else {
          return bounds_ == null ?
              com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.getDefaultInstance() : bounds_;
        }
      }
      /**
       * .com.onthegomap.planetiler.proto.Envelope bounds = 7;
       */
      private com.google.protobuf.SingleFieldBuilder<
          com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope, com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.EnvelopeOrBuilder> 
          getBoundsFieldBuilder() {
        if (boundsBuilder_ == null) {
          boundsBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope, com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.EnvelopeOrBuilder>(
                  getBounds(),
                  getParentForChildren(),
                  isClean());
          bounds_ = null;
        }
        return boundsBuilder_;
      }

      private com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate center_;
      private com.google.protobuf.SingleFieldBuilder<
          com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate, com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.CoordinateOrBuilder> centerBuilder_;
      /**
       * .com.onthegomap.planetiler.proto.Coordinate center = 8;
       * @return Whether the center field is set.
       */
      public boolean hasCenter() {
        return ((bitField0_ & 0x00000080) != 0);
      }
      /**
       * .com.onthegomap.planetiler.proto.Coordinate center = 8;
       * @return The center.
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate getCenter() {
        if (centerBuilder_ == null) {
          return center_ == null ? com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.getDefaultInstance() : center_;
        } else {
          return centerBuilder_.getMessage();
        }
      }
      /**
       * .com.onthegomap.planetiler.proto.Coordinate center = 8;
       */
      public Builder setCenter(com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate value) {
        if (centerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          center_ = value;
        } else {
          centerBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.Coordinate center = 8;
       */
      public Builder setCenter(
          com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.Builder builderForValue) {
        if (centerBuilder_ == null) {
          center_ = builderForValue.build();
        } else {
          centerBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000080;
        onChanged();
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.Coordinate center = 8;
       */
      public Builder mergeCenter(com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate value) {
        if (centerBuilder_ == null) {
          if (((bitField0_ & 0x00000080) != 0) &&
            center_ != null &&
            center_ != com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.getDefaultInstance()) {
            getCenterBuilder().mergeFrom(value);
          } else {
            center_ = value;
          }
        } else {
          centerBuilder_.mergeFrom(value);
        }
        if (center_ != null) {
          bitField0_ |= 0x00000080;
          onChanged();
        }
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.Coordinate center = 8;
       */
      public Builder clearCenter() {
        bitField0_ = (bitField0_ & ~0x00000080);
        center_ = null;
        if (centerBuilder_ != null) {
          centerBuilder_.dispose();
          centerBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.Coordinate center = 8;
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.Builder getCenterBuilder() {
        bitField0_ |= 0x00000080;
        onChanged();
        return getCenterFieldBuilder().getBuilder();
      }
      /**
       * .com.onthegomap.planetiler.proto.Coordinate center = 8;
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.CoordinateOrBuilder getCenterOrBuilder() {
        if (centerBuilder_ != null) {
          return centerBuilder_.getMessageOrBuilder();
        } else {
          return center_ == null ?
              com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.getDefaultInstance() : center_;
        }
      }
      /**
       * .com.onthegomap.planetiler.proto.Coordinate center = 8;
       */
      private com.google.protobuf.SingleFieldBuilder<
          com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate, com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.CoordinateOrBuilder> 
          getCenterFieldBuilder() {
        if (centerBuilder_ == null) {
          centerBuilder_ = new com.google.protobuf.SingleFieldBuilder<
              com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate, com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.CoordinateOrBuilder>(
                  getCenter(),
                  getParentForChildren(),
                  isClean());
          center_ = null;
        }
        return centerBuilder_;
      }

      private int minZoom_ ;
      /**
       * int32 min_zoom = 9;
       * @return The minZoom.
       */
      @java.lang.Override
      public int getMinZoom() {
        return minZoom_;
      }
      /**
       * int32 min_zoom = 9;
       * @param value The minZoom to set.
       * @return This builder for chaining.
       */
      public Builder setMinZoom(int value) {

        minZoom_ = value;
        bitField0_ |= 0x00000100;
        onChanged();
        return this;
      }
      /**
       * int32 min_zoom = 9;
       * @return This builder for chaining.
       */
      public Builder clearMinZoom() {
        bitField0_ = (bitField0_ & ~0x00000100);
        minZoom_ = 0;
        onChanged();
        return this;
      }

      private int maxZoom_ ;
      /**
       * int32 max_zoom = 10;
       * @return The maxZoom.
       */
      @java.lang.Override
      public int getMaxZoom() {
        return maxZoom_;
      }
      /**
       * int32 max_zoom = 10;
       * @param value The maxZoom to set.
       * @return This builder for chaining.
       */
      public Builder setMaxZoom(int value) {

        maxZoom_ = value;
        bitField0_ |= 0x00000200;
        onChanged();
        return this;
      }
      /**
       * int32 max_zoom = 10;
       * @return This builder for chaining.
       */
      public Builder clearMaxZoom() {
        bitField0_ = (bitField0_ & ~0x00000200);
        maxZoom_ = 0;
        onChanged();
        return this;
      }

      private java.util.List vectorLayers_ =
        java.util.Collections.emptyList();
      private void ensureVectorLayersIsMutable() {
        if (!((bitField0_ & 0x00000400) != 0)) {
          vectorLayers_ = new java.util.ArrayList(vectorLayers_);
          bitField0_ |= 0x00000400;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilder<
          com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayerOrBuilder> vectorLayersBuilder_;

      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public java.util.List getVectorLayersList() {
        if (vectorLayersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(vectorLayers_);
        } else {
          return vectorLayersBuilder_.getMessageList();
        }
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public int getVectorLayersCount() {
        if (vectorLayersBuilder_ == null) {
          return vectorLayers_.size();
        } else {
          return vectorLayersBuilder_.getCount();
        }
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer getVectorLayers(int index) {
        if (vectorLayersBuilder_ == null) {
          return vectorLayers_.get(index);
        } else {
          return vectorLayersBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public Builder setVectorLayers(
          int index, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer value) {
        if (vectorLayersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVectorLayersIsMutable();
          vectorLayers_.set(index, value);
          onChanged();
        } else {
          vectorLayersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public Builder setVectorLayers(
          int index, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.Builder builderForValue) {
        if (vectorLayersBuilder_ == null) {
          ensureVectorLayersIsMutable();
          vectorLayers_.set(index, builderForValue.build());
          onChanged();
        } else {
          vectorLayersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public Builder addVectorLayers(com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer value) {
        if (vectorLayersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVectorLayersIsMutable();
          vectorLayers_.add(value);
          onChanged();
        } else {
          vectorLayersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public Builder addVectorLayers(
          int index, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer value) {
        if (vectorLayersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureVectorLayersIsMutable();
          vectorLayers_.add(index, value);
          onChanged();
        } else {
          vectorLayersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public Builder addVectorLayers(
          com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.Builder builderForValue) {
        if (vectorLayersBuilder_ == null) {
          ensureVectorLayersIsMutable();
          vectorLayers_.add(builderForValue.build());
          onChanged();
        } else {
          vectorLayersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public Builder addVectorLayers(
          int index, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.Builder builderForValue) {
        if (vectorLayersBuilder_ == null) {
          ensureVectorLayersIsMutable();
          vectorLayers_.add(index, builderForValue.build());
          onChanged();
        } else {
          vectorLayersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public Builder addAllVectorLayers(
          java.lang.Iterable values) {
        if (vectorLayersBuilder_ == null) {
          ensureVectorLayersIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, vectorLayers_);
          onChanged();
        } else {
          vectorLayersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public Builder clearVectorLayers() {
        if (vectorLayersBuilder_ == null) {
          vectorLayers_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000400);
          onChanged();
        } else {
          vectorLayersBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public Builder removeVectorLayers(int index) {
        if (vectorLayersBuilder_ == null) {
          ensureVectorLayersIsMutable();
          vectorLayers_.remove(index);
          onChanged();
        } else {
          vectorLayersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.Builder getVectorLayersBuilder(
          int index) {
        return getVectorLayersFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayerOrBuilder getVectorLayersOrBuilder(
          int index) {
        if (vectorLayersBuilder_ == null) {
          return vectorLayers_.get(index);  } else {
          return vectorLayersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public java.util.List 
           getVectorLayersOrBuilderList() {
        if (vectorLayersBuilder_ != null) {
          return vectorLayersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(vectorLayers_);
        }
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.Builder addVectorLayersBuilder() {
        return getVectorLayersFieldBuilder().addBuilder(
            com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.getDefaultInstance());
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.Builder addVectorLayersBuilder(
          int index) {
        return getVectorLayersFieldBuilder().addBuilder(
            index, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.getDefaultInstance());
      }
      /**
       * repeated .com.onthegomap.planetiler.proto.VectorLayer vector_layers = 11;
       */
      public java.util.List 
           getVectorLayersBuilderList() {
        return getVectorLayersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilder<
          com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayerOrBuilder> 
          getVectorLayersFieldBuilder() {
        if (vectorLayersBuilder_ == null) {
          vectorLayersBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
              com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.Builder, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayerOrBuilder>(
                  vectorLayers_,
                  ((bitField0_ & 0x00000400) != 0),
                  getParentForChildren(),
                  isClean());
          vectorLayers_ = null;
        }
        return vectorLayersBuilder_;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> others_;
      private com.google.protobuf.MapField
          internalGetOthers() {
        if (others_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              OthersDefaultEntryHolder.defaultEntry);
        }
        return others_;
      }
      private com.google.protobuf.MapField
          internalGetMutableOthers() {
        if (others_ == null) {
          others_ = com.google.protobuf.MapField.newMapField(
              OthersDefaultEntryHolder.defaultEntry);
        }
        if (!others_.isMutable()) {
          others_ = others_.copy();
        }
        bitField0_ |= 0x00000800;
        onChanged();
        return others_;
      }
      public int getOthersCount() {
        return internalGetOthers().getMap().size();
      }
      /**
       * map<string, string> others = 12;
       */
      @java.lang.Override
      public boolean containsOthers(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetOthers().getMap().containsKey(key);
      }
      /**
       * Use {@link #getOthersMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map getOthers() {
        return getOthersMap();
      }
      /**
       * map<string, string> others = 12;
       */
      @java.lang.Override
      public java.util.Map getOthersMap() {
        return internalGetOthers().getMap();
      }
      /**
       * map<string, string> others = 12;
       */
      @java.lang.Override
      public /* nullable */
java.lang.String getOthersOrDefault(
          java.lang.String key,
          /* nullable */
java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map map =
            internalGetOthers().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * map<string, string> others = 12;
       */
      @java.lang.Override
      public java.lang.String getOthersOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map map =
            internalGetOthers().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearOthers() {
        bitField0_ = (bitField0_ & ~0x00000800);
        internalGetMutableOthers().getMutableMap()
            .clear();
        return this;
      }
      /**
       * map<string, string> others = 12;
       */
      public Builder removeOthers(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableOthers().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map
          getMutableOthers() {
        bitField0_ |= 0x00000800;
        return internalGetMutableOthers().getMutableMap();
      }
      /**
       * map<string, string> others = 12;
       */
      public Builder putOthers(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) { throw new NullPointerException("map value"); }
        internalGetMutableOthers().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000800;
        return this;
      }
      /**
       * map<string, string> others = 12;
       */
      public Builder putAllOthers(
          java.util.Map values) {
        internalGetMutableOthers().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000800;
        return this;
      }

      private int tileCompression_ = 0;
      /**
       * .com.onthegomap.planetiler.proto.TileCompression tile_compression = 13;
       * @return The enum numeric value on the wire for tileCompression.
       */
      @java.lang.Override public int getTileCompressionValue() {
        return tileCompression_;
      }
      /**
       * .com.onthegomap.planetiler.proto.TileCompression tile_compression = 13;
       * @param value The enum numeric value on the wire for tileCompression to set.
       * @return This builder for chaining.
       */
      public Builder setTileCompressionValue(int value) {
        tileCompression_ = value;
        bitField0_ |= 0x00001000;
        onChanged();
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.TileCompression tile_compression = 13;
       * @return The tileCompression.
       */
      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.TileCompression getTileCompression() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.TileCompression result = com.onthegomap.planetiler.proto.StreamArchiveProto.TileCompression.forNumber(tileCompression_);
        return result == null ? com.onthegomap.planetiler.proto.StreamArchiveProto.TileCompression.UNRECOGNIZED : result;
      }
      /**
       * .com.onthegomap.planetiler.proto.TileCompression tile_compression = 13;
       * @param value The tileCompression to set.
       * @return This builder for chaining.
       */
      public Builder setTileCompression(com.onthegomap.planetiler.proto.StreamArchiveProto.TileCompression value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00001000;
        tileCompression_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * .com.onthegomap.planetiler.proto.TileCompression tile_compression = 13;
       * @return This builder for chaining.
       */
      public Builder clearTileCompression() {
        bitField0_ = (bitField0_ & ~0x00001000);
        tileCompression_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:com.onthegomap.planetiler.proto.Metadata)
    }

    // @@protoc_insertion_point(class_scope:com.onthegomap.planetiler.proto.Metadata)
    private static final com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata();
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public Metadata parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.Metadata getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EnvelopeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.onthegomap.planetiler.proto.Envelope)
      com.google.protobuf.MessageOrBuilder {

    /**
     * double min_x = 1;
     * @return The minX.
     */
    double getMinX();

    /**
     * double max_x = 2;
     * @return The maxX.
     */
    double getMaxX();

    /**
     * double min_y = 3;
     * @return The minY.
     */
    double getMinY();

    /**
     * double max_y = 4;
     * @return The maxY.
     */
    double getMaxY();
  }
  /**
   * Protobuf type {@code com.onthegomap.planetiler.proto.Envelope}
   */
  public static final class Envelope extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.onthegomap.planetiler.proto.Envelope)
      EnvelopeOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 28,
        /* patch= */ 1,
        /* suffix= */ "",
        Envelope.class.getName());
    }
    // Use Envelope.newBuilder() to construct.
    private Envelope(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
    }
    private Envelope() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Envelope_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Envelope_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.class, com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.Builder.class);
    }

    public static final int MIN_X_FIELD_NUMBER = 1;
    private double minX_ = 0D;
    /**
     * double min_x = 1;
     * @return The minX.
     */
    @java.lang.Override
    public double getMinX() {
      return minX_;
    }

    public static final int MAX_X_FIELD_NUMBER = 2;
    private double maxX_ = 0D;
    /**
     * double max_x = 2;
     * @return The maxX.
     */
    @java.lang.Override
    public double getMaxX() {
      return maxX_;
    }

    public static final int MIN_Y_FIELD_NUMBER = 3;
    private double minY_ = 0D;
    /**
     * double min_y = 3;
     * @return The minY.
     */
    @java.lang.Override
    public double getMinY() {
      return minY_;
    }

    public static final int MAX_Y_FIELD_NUMBER = 4;
    private double maxY_ = 0D;
    /**
     * double max_y = 4;
     * @return The maxY.
     */
    @java.lang.Override
    public double getMaxY() {
      return maxY_;
    }

    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 (java.lang.Double.doubleToRawLongBits(minX_) != 0) {
        output.writeDouble(1, minX_);
      }
      if (java.lang.Double.doubleToRawLongBits(maxX_) != 0) {
        output.writeDouble(2, maxX_);
      }
      if (java.lang.Double.doubleToRawLongBits(minY_) != 0) {
        output.writeDouble(3, minY_);
      }
      if (java.lang.Double.doubleToRawLongBits(maxY_) != 0) {
        output.writeDouble(4, maxY_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (java.lang.Double.doubleToRawLongBits(minX_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, minX_);
      }
      if (java.lang.Double.doubleToRawLongBits(maxX_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(2, maxX_);
      }
      if (java.lang.Double.doubleToRawLongBits(minY_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(3, minY_);
      }
      if (java.lang.Double.doubleToRawLongBits(maxY_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(4, maxY_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope)) {
        return super.equals(obj);
      }
      com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope other = (com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope) obj;

      if (java.lang.Double.doubleToLongBits(getMinX())
          != java.lang.Double.doubleToLongBits(
              other.getMinX())) return false;
      if (java.lang.Double.doubleToLongBits(getMaxX())
          != java.lang.Double.doubleToLongBits(
              other.getMaxX())) return false;
      if (java.lang.Double.doubleToLongBits(getMinY())
          != java.lang.Double.doubleToLongBits(
              other.getMinY())) return false;
      if (java.lang.Double.doubleToLongBits(getMaxY())
          != java.lang.Double.doubleToLongBits(
              other.getMaxY())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + MIN_X_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getMinX()));
      hash = (37 * hash) + MAX_X_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getMaxX()));
      hash = (37 * hash) + MIN_Y_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getMinY()));
      hash = (37 * hash) + MAX_Y_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getMaxY()));
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.onthegomap.planetiler.proto.Envelope}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:com.onthegomap.planetiler.proto.Envelope)
        com.onthegomap.planetiler.proto.StreamArchiveProto.EnvelopeOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Envelope_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Envelope_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.class, com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.Builder.class);
      }

      // Construct using com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        minX_ = 0D;
        maxX_ = 0D;
        minY_ = 0D;
        maxY_ = 0D;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Envelope_descriptor;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope getDefaultInstanceForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.getDefaultInstance();
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope build() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope buildPartial() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope result = new com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.minX_ = minX_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.maxX_ = maxX_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.minY_ = minY_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.maxY_ = maxY_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope) {
          return mergeFrom((com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope other) {
        if (other == com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope.getDefaultInstance()) return this;
        if (other.getMinX() != 0D) {
          setMinX(other.getMinX());
        }
        if (other.getMaxX() != 0D) {
          setMaxX(other.getMaxX());
        }
        if (other.getMinY() != 0D) {
          setMinY(other.getMinY());
        }
        if (other.getMaxY() != 0D) {
          setMaxY(other.getMaxY());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                minX_ = input.readDouble();
                bitField0_ |= 0x00000001;
                break;
              } // case 9
              case 17: {
                maxX_ = input.readDouble();
                bitField0_ |= 0x00000002;
                break;
              } // case 17
              case 25: {
                minY_ = input.readDouble();
                bitField0_ |= 0x00000004;
                break;
              } // case 25
              case 33: {
                maxY_ = input.readDouble();
                bitField0_ |= 0x00000008;
                break;
              } // case 33
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private double minX_ ;
      /**
       * double min_x = 1;
       * @return The minX.
       */
      @java.lang.Override
      public double getMinX() {
        return minX_;
      }
      /**
       * double min_x = 1;
       * @param value The minX to set.
       * @return This builder for chaining.
       */
      public Builder setMinX(double value) {

        minX_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * double min_x = 1;
       * @return This builder for chaining.
       */
      public Builder clearMinX() {
        bitField0_ = (bitField0_ & ~0x00000001);
        minX_ = 0D;
        onChanged();
        return this;
      }

      private double maxX_ ;
      /**
       * double max_x = 2;
       * @return The maxX.
       */
      @java.lang.Override
      public double getMaxX() {
        return maxX_;
      }
      /**
       * double max_x = 2;
       * @param value The maxX to set.
       * @return This builder for chaining.
       */
      public Builder setMaxX(double value) {

        maxX_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * double max_x = 2;
       * @return This builder for chaining.
       */
      public Builder clearMaxX() {
        bitField0_ = (bitField0_ & ~0x00000002);
        maxX_ = 0D;
        onChanged();
        return this;
      }

      private double minY_ ;
      /**
       * double min_y = 3;
       * @return The minY.
       */
      @java.lang.Override
      public double getMinY() {
        return minY_;
      }
      /**
       * double min_y = 3;
       * @param value The minY to set.
       * @return This builder for chaining.
       */
      public Builder setMinY(double value) {

        minY_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * double min_y = 3;
       * @return This builder for chaining.
       */
      public Builder clearMinY() {
        bitField0_ = (bitField0_ & ~0x00000004);
        minY_ = 0D;
        onChanged();
        return this;
      }

      private double maxY_ ;
      /**
       * double max_y = 4;
       * @return The maxY.
       */
      @java.lang.Override
      public double getMaxY() {
        return maxY_;
      }
      /**
       * double max_y = 4;
       * @param value The maxY to set.
       * @return This builder for chaining.
       */
      public Builder setMaxY(double value) {

        maxY_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * double max_y = 4;
       * @return This builder for chaining.
       */
      public Builder clearMaxY() {
        bitField0_ = (bitField0_ & ~0x00000008);
        maxY_ = 0D;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:com.onthegomap.planetiler.proto.Envelope)
    }

    // @@protoc_insertion_point(class_scope:com.onthegomap.planetiler.proto.Envelope)
    private static final com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope();
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public Envelope parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.Envelope getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CoordinateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.onthegomap.planetiler.proto.Coordinate)
      com.google.protobuf.MessageOrBuilder {

    /**
     * double x = 1;
     * @return The x.
     */
    double getX();

    /**
     * double y = 2;
     * @return The y.
     */
    double getY();

    /**
     * double z = 3;
     * @return The z.
     */
    double getZ();
  }
  /**
   * Protobuf type {@code com.onthegomap.planetiler.proto.Coordinate}
   */
  public static final class Coordinate extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.onthegomap.planetiler.proto.Coordinate)
      CoordinateOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 28,
        /* patch= */ 1,
        /* suffix= */ "",
        Coordinate.class.getName());
    }
    // Use Coordinate.newBuilder() to construct.
    private Coordinate(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
    }
    private Coordinate() {
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Coordinate_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Coordinate_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.class, com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.Builder.class);
    }

    public static final int X_FIELD_NUMBER = 1;
    private double x_ = 0D;
    /**
     * double x = 1;
     * @return The x.
     */
    @java.lang.Override
    public double getX() {
      return x_;
    }

    public static final int Y_FIELD_NUMBER = 2;
    private double y_ = 0D;
    /**
     * double y = 2;
     * @return The y.
     */
    @java.lang.Override
    public double getY() {
      return y_;
    }

    public static final int Z_FIELD_NUMBER = 3;
    private double z_ = 0D;
    /**
     * double z = 3;
     * @return The z.
     */
    @java.lang.Override
    public double getZ() {
      return z_;
    }

    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 (java.lang.Double.doubleToRawLongBits(x_) != 0) {
        output.writeDouble(1, x_);
      }
      if (java.lang.Double.doubleToRawLongBits(y_) != 0) {
        output.writeDouble(2, y_);
      }
      if (java.lang.Double.doubleToRawLongBits(z_) != 0) {
        output.writeDouble(3, z_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (java.lang.Double.doubleToRawLongBits(x_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, x_);
      }
      if (java.lang.Double.doubleToRawLongBits(y_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(2, y_);
      }
      if (java.lang.Double.doubleToRawLongBits(z_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(3, z_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate)) {
        return super.equals(obj);
      }
      com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate other = (com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate) obj;

      if (java.lang.Double.doubleToLongBits(getX())
          != java.lang.Double.doubleToLongBits(
              other.getX())) return false;
      if (java.lang.Double.doubleToLongBits(getY())
          != java.lang.Double.doubleToLongBits(
              other.getY())) return false;
      if (java.lang.Double.doubleToLongBits(getZ())
          != java.lang.Double.doubleToLongBits(
              other.getZ())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + X_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getX()));
      hash = (37 * hash) + Y_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getY()));
      hash = (37 * hash) + Z_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getZ()));
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.onthegomap.planetiler.proto.Coordinate}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:com.onthegomap.planetiler.proto.Coordinate)
        com.onthegomap.planetiler.proto.StreamArchiveProto.CoordinateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Coordinate_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Coordinate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.class, com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.Builder.class);
      }

      // Construct using com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        x_ = 0D;
        y_ = 0D;
        z_ = 0D;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_Coordinate_descriptor;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate getDefaultInstanceForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.getDefaultInstance();
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate build() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate buildPartial() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate result = new com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.x_ = x_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.y_ = y_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.z_ = z_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate) {
          return mergeFrom((com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate other) {
        if (other == com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate.getDefaultInstance()) return this;
        if (other.getX() != 0D) {
          setX(other.getX());
        }
        if (other.getY() != 0D) {
          setY(other.getY());
        }
        if (other.getZ() != 0D) {
          setZ(other.getZ());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                x_ = input.readDouble();
                bitField0_ |= 0x00000001;
                break;
              } // case 9
              case 17: {
                y_ = input.readDouble();
                bitField0_ |= 0x00000002;
                break;
              } // case 17
              case 25: {
                z_ = input.readDouble();
                bitField0_ |= 0x00000004;
                break;
              } // case 25
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private double x_ ;
      /**
       * double x = 1;
       * @return The x.
       */
      @java.lang.Override
      public double getX() {
        return x_;
      }
      /**
       * double x = 1;
       * @param value The x to set.
       * @return This builder for chaining.
       */
      public Builder setX(double value) {

        x_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * double x = 1;
       * @return This builder for chaining.
       */
      public Builder clearX() {
        bitField0_ = (bitField0_ & ~0x00000001);
        x_ = 0D;
        onChanged();
        return this;
      }

      private double y_ ;
      /**
       * double y = 2;
       * @return The y.
       */
      @java.lang.Override
      public double getY() {
        return y_;
      }
      /**
       * double y = 2;
       * @param value The y to set.
       * @return This builder for chaining.
       */
      public Builder setY(double value) {

        y_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * double y = 2;
       * @return This builder for chaining.
       */
      public Builder clearY() {
        bitField0_ = (bitField0_ & ~0x00000002);
        y_ = 0D;
        onChanged();
        return this;
      }

      private double z_ ;
      /**
       * double z = 3;
       * @return The z.
       */
      @java.lang.Override
      public double getZ() {
        return z_;
      }
      /**
       * double z = 3;
       * @param value The z to set.
       * @return This builder for chaining.
       */
      public Builder setZ(double value) {

        z_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * double z = 3;
       * @return This builder for chaining.
       */
      public Builder clearZ() {
        bitField0_ = (bitField0_ & ~0x00000004);
        z_ = 0D;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:com.onthegomap.planetiler.proto.Coordinate)
    }

    // @@protoc_insertion_point(class_scope:com.onthegomap.planetiler.proto.Coordinate)
    private static final com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate();
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public Coordinate parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.Coordinate getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VectorLayerOrBuilder extends
      // @@protoc_insertion_point(interface_extends:com.onthegomap.planetiler.proto.VectorLayer)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string id = 1;
     * @return The id.
     */
    java.lang.String getId();
    /**
     * string id = 1;
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    int getFieldsCount();
    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    boolean containsFields(
        java.lang.String key);
    /**
     * Use {@link #getFieldsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map
    getFields();
    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    java.util.Map
    getFieldsMap();
    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    /* nullable */
com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType getFieldsOrDefault(
        java.lang.String key,
        /* nullable */
com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType         defaultValue);
    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType getFieldsOrThrow(
        java.lang.String key);
    /**
     * Use {@link #getFieldsValueMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map
    getFieldsValue();
    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    java.util.Map
    getFieldsValueMap();
    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    int getFieldsValueOrDefault(
        java.lang.String key,
        int defaultValue);
    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    int getFieldsValueOrThrow(
        java.lang.String key);

    /**
     * string description = 3;
     * @return The description.
     */
    java.lang.String getDescription();
    /**
     * string description = 3;
     * @return The bytes for description.
     */
    com.google.protobuf.ByteString
        getDescriptionBytes();

    /**
     * int32 min_zoom = 4;
     * @return The minZoom.
     */
    int getMinZoom();

    /**
     * int32 max_zoom = 5;
     * @return The maxZoom.
     */
    int getMaxZoom();
  }
  /**
   * Protobuf type {@code com.onthegomap.planetiler.proto.VectorLayer}
   */
  public static final class VectorLayer extends
      com.google.protobuf.GeneratedMessage implements
      // @@protoc_insertion_point(message_implements:com.onthegomap.planetiler.proto.VectorLayer)
      VectorLayerOrBuilder {
  private static final long serialVersionUID = 0L;
    static {
      com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 28,
        /* patch= */ 1,
        /* suffix= */ "",
        VectorLayer.class.getName());
    }
    // Use VectorLayer.newBuilder() to construct.
    private VectorLayer(com.google.protobuf.GeneratedMessage.Builder builder) {
      super(builder);
    }
    private VectorLayer() {
      id_ = "";
      description_ = "";
    }

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_VectorLayer_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
        int number) {
      switch (number) {
        case 2:
          return internalGetFields();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_VectorLayer_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.class, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.Builder.class);
    }

    /**
     * Protobuf enum {@code com.onthegomap.planetiler.proto.VectorLayer.FieldType}
     */
    public enum FieldType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * FIELD_TYPE_UNSPECIFIED = 0;
       */
      FIELD_TYPE_UNSPECIFIED(0),
      /**
       * FIELD_TYPE_NUMBER = 1;
       */
      FIELD_TYPE_NUMBER(1),
      /**
       * FIELD_TYPE_BOOLEAN = 3;
       */
      FIELD_TYPE_BOOLEAN(3),
      /**
       * FIELD_TYPE_STRING = 4;
       */
      FIELD_TYPE_STRING(4),
      UNRECOGNIZED(-1),
      ;

      static {
        com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
          com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
          /* major= */ 4,
          /* minor= */ 28,
          /* patch= */ 1,
          /* suffix= */ "",
          FieldType.class.getName());
      }
      /**
       * FIELD_TYPE_UNSPECIFIED = 0;
       */
      public static final int FIELD_TYPE_UNSPECIFIED_VALUE = 0;
      /**
       * FIELD_TYPE_NUMBER = 1;
       */
      public static final int FIELD_TYPE_NUMBER_VALUE = 1;
      /**
       * FIELD_TYPE_BOOLEAN = 3;
       */
      public static final int FIELD_TYPE_BOOLEAN_VALUE = 3;
      /**
       * FIELD_TYPE_STRING = 4;
       */
      public static final int FIELD_TYPE_STRING_VALUE = 4;


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

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

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static FieldType forNumber(int value) {
        switch (value) {
          case 0: return FIELD_TYPE_UNSPECIFIED;
          case 1: return FIELD_TYPE_NUMBER;
          case 3: return FIELD_TYPE_BOOLEAN;
          case 4: return FIELD_TYPE_STRING;
          default: return null;
        }
      }

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

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

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

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

      private final int value;

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

      // @@protoc_insertion_point(enum_scope:com.onthegomap.planetiler.proto.VectorLayer.FieldType)
    }

    public static final int ID_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private volatile java.lang.Object id_ = "";
    /**
     * string id = 1;
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     * string id = 1;
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELDS_FIELD_NUMBER = 2;
    private static final class FieldsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.Integer> defaultEntry =
              com.google.protobuf.MapEntry
              .newDefaultInstance(
                  com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_VectorLayer_FieldsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.ENUM,
                  com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType.FIELD_TYPE_UNSPECIFIED.getNumber());
    }
    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.Integer> fields_;
    private com.google.protobuf.MapField
    internalGetFields() {
      if (fields_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            FieldsDefaultEntryHolder.defaultEntry);
      }
      return fields_;
    }
    private static final
    com.google.protobuf.Internal.MapAdapter.Converter<
        java.lang.Integer, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType> fieldsValueConverter =
            com.google.protobuf.Internal.MapAdapter.newEnumConverter(
                com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType.internalGetValueMap(),
                com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType.UNRECOGNIZED);
    private static final java.util.Map
    internalGetAdaptedFieldsMap(
        java.util.Map map) {
      return new com.google.protobuf.Internal.MapAdapter<
          java.lang.String, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType, java.lang.Integer>(
              map, fieldsValueConverter);
    }
    public int getFieldsCount() {
      return internalGetFields().getMap().size();
    }
    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    @java.lang.Override
    public boolean containsFields(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetFields().getMap().containsKey(key);
    }
    /**
     * Use {@link #getFieldsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map
    getFields() {
      return getFieldsMap();
    }
    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    @java.lang.Override
    public java.util.Map
    getFieldsMap() {
      return internalGetAdaptedFieldsMap(
          internalGetFields().getMap());}
    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    @java.lang.Override
    public /* nullable */
com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType getFieldsOrDefault(
        java.lang.String key,
        /* nullable */
com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map map =
          internalGetFields().getMap();
      return map.containsKey(key)
             ? fieldsValueConverter.doForward(map.get(key))
             : defaultValue;
    }
    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType getFieldsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map map =
          internalGetFields().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return fieldsValueConverter.doForward(map.get(key));
    }
    /**
     * Use {@link #getFieldsValueMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map
    getFieldsValue() {
      return getFieldsValueMap();
    }
    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    @java.lang.Override
    public java.util.Map
    getFieldsValueMap() {
      return internalGetFields().getMap();
    }
    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    @java.lang.Override
    public int getFieldsValueOrDefault(
        java.lang.String key,
        int defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map map =
          internalGetFields().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
     */
    @java.lang.Override
    public int getFieldsValueOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map map =
          internalGetFields().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int DESCRIPTION_FIELD_NUMBER = 3;
    @SuppressWarnings("serial")
    private volatile java.lang.Object description_ = "";
    /**
     * string description = 3;
     * @return The description.
     */
    @java.lang.Override
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        description_ = s;
        return s;
      }
    }
    /**
     * string description = 3;
     * @return The bytes for description.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MIN_ZOOM_FIELD_NUMBER = 4;
    private int minZoom_ = 0;
    /**
     * int32 min_zoom = 4;
     * @return The minZoom.
     */
    @java.lang.Override
    public int getMinZoom() {
      return minZoom_;
    }

    public static final int MAX_ZOOM_FIELD_NUMBER = 5;
    private int maxZoom_ = 0;
    /**
     * int32 max_zoom = 5;
     * @return The maxZoom.
     */
    @java.lang.Override
    public int getMaxZoom() {
      return maxZoom_;
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(id_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 1, id_);
      }
      com.google.protobuf.GeneratedMessage
        .serializeStringMapTo(
          output,
          internalGetFields(),
          FieldsDefaultEntryHolder.defaultEntry,
          2);
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(description_)) {
        com.google.protobuf.GeneratedMessage.writeString(output, 3, description_);
      }
      if (minZoom_ != 0) {
        output.writeInt32(4, minZoom_);
      }
      if (maxZoom_ != 0) {
        output.writeInt32(5, maxZoom_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(id_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(1, id_);
      }
      for (java.util.Map.Entry entry
           : internalGetFields().getMap().entrySet()) {
        com.google.protobuf.MapEntry
        fields__ = FieldsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, fields__);
      }
      if (!com.google.protobuf.GeneratedMessage.isStringEmpty(description_)) {
        size += com.google.protobuf.GeneratedMessage.computeStringSize(3, description_);
      }
      if (minZoom_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, minZoom_);
      }
      if (maxZoom_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, maxZoom_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer)) {
        return super.equals(obj);
      }
      com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer other = (com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer) obj;

      if (!getId()
          .equals(other.getId())) return false;
      if (!internalGetFields().equals(
          other.internalGetFields())) return false;
      if (!getDescription()
          .equals(other.getDescription())) return false;
      if (getMinZoom()
          != other.getMinZoom()) return false;
      if (getMaxZoom()
          != other.getMaxZoom()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      if (!internalGetFields().getMap().isEmpty()) {
        hash = (37 * hash) + FIELDS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetFields().hashCode();
      }
      hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
      hash = (53 * hash) + getDescription().hashCode();
      hash = (37 * hash) + MIN_ZOOM_FIELD_NUMBER;
      hash = (53 * hash) + getMinZoom();
      hash = (37 * hash) + MAX_ZOOM_FIELD_NUMBER;
      hash = (53 * hash) + getMaxZoom();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input);
    }
    public static com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessage
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer 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.GeneratedMessage.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code com.onthegomap.planetiler.proto.VectorLayer}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder implements
        // @@protoc_insertion_point(builder_implements:com.onthegomap.planetiler.proto.VectorLayer)
        com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayerOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_VectorLayer_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetFields();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapFieldReflectionAccessor internalGetMutableMapFieldReflection(
          int number) {
        switch (number) {
          case 2:
            return internalGetMutableFields();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_VectorLayer_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.class, com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.Builder.class);
      }

      // Construct using com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessage.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        id_ = "";
        internalGetMutableFields().clear();
        description_ = "";
        minZoom_ = 0;
        maxZoom_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.internal_static_com_onthegomap_planetiler_proto_VectorLayer_descriptor;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer getDefaultInstanceForType() {
        return com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.getDefaultInstance();
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer build() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer buildPartial() {
        com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer result = new com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.id_ = id_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.fields_ = internalGetFields();
          result.fields_.makeImmutable();
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.description_ = description_;
        }
        if (((from_bitField0_ & 0x00000008) != 0)) {
          result.minZoom_ = minZoom_;
        }
        if (((from_bitField0_ & 0x00000010) != 0)) {
          result.maxZoom_ = maxZoom_;
        }
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer) {
          return mergeFrom((com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer other) {
        if (other == com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        internalGetMutableFields().mergeFrom(
            other.internalGetFields());
        bitField0_ |= 0x00000002;
        if (!other.getDescription().isEmpty()) {
          description_ = other.description_;
          bitField0_ |= 0x00000004;
          onChanged();
        }
        if (other.getMinZoom() != 0) {
          setMinZoom(other.getMinZoom());
        }
        if (other.getMaxZoom() != 0) {
          setMaxZoom(other.getMaxZoom());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

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

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                id_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              case 18: {
                com.google.protobuf.MapEntry
                fields__ = input.readMessage(
                    FieldsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableFields().getMutableMap().put(
                    fields__.getKey(), fields__.getValue());
                bitField0_ |= 0x00000002;
                break;
              } // case 18
              case 26: {
                description_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000004;
                break;
              } // case 26
              case 32: {
                minZoom_ = input.readInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
              case 40: {
                maxZoom_ = input.readInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object id_ = "";
      /**
       * string id = 1;
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string id = 1;
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string id = 1;
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * string id = 1;
       * @return This builder for chaining.
       */
      public Builder clearId() {
        id_ = getDefaultInstance().getId();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * string id = 1;
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        id_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.Integer> fields_;
      private com.google.protobuf.MapField
          internalGetFields() {
        if (fields_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              FieldsDefaultEntryHolder.defaultEntry);
        }
        return fields_;
      }
      private com.google.protobuf.MapField
          internalGetMutableFields() {
        if (fields_ == null) {
          fields_ = com.google.protobuf.MapField.newMapField(
              FieldsDefaultEntryHolder.defaultEntry);
        }
        if (!fields_.isMutable()) {
          fields_ = fields_.copy();
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return fields_;
      }
      public int getFieldsCount() {
        return internalGetFields().getMap().size();
      }
      /**
       * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
       */
      @java.lang.Override
      public boolean containsFields(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetFields().getMap().containsKey(key);
      }
      /**
       * Use {@link #getFieldsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map
      getFields() {
        return getFieldsMap();
      }
      /**
       * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
       */
      @java.lang.Override
      public java.util.Map
      getFieldsMap() {
        return internalGetAdaptedFieldsMap(
            internalGetFields().getMap());}
      /**
       * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
       */
      @java.lang.Override
      public /* nullable */
com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType getFieldsOrDefault(
          java.lang.String key,
          /* nullable */
com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map map =
            internalGetFields().getMap();
        return map.containsKey(key)
               ? fieldsValueConverter.doForward(map.get(key))
               : defaultValue;
      }
      /**
       * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
       */
      @java.lang.Override
      public com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType getFieldsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map map =
            internalGetFields().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return fieldsValueConverter.doForward(map.get(key));
      }
      /**
       * Use {@link #getFieldsValueMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map
      getFieldsValue() {
        return getFieldsValueMap();
      }
      /**
       * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
       */
      @java.lang.Override
      public java.util.Map
      getFieldsValueMap() {
        return internalGetFields().getMap();
      }
      /**
       * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
       */
      @java.lang.Override
      public int getFieldsValueOrDefault(
          java.lang.String key,
          int defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map map =
            internalGetFields().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
       */
      @java.lang.Override
      public int getFieldsValueOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map map =
            internalGetFields().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearFields() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableFields().getMutableMap()
            .clear();
        return this;
      }
      /**
       * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
       */
      public Builder removeFields(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableFields().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map
          getMutableFields() {
        bitField0_ |= 0x00000002;
        return internalGetAdaptedFieldsMap(
             internalGetMutableFields().getMutableMap());
      }
      /**
       * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
       */
      public Builder putFields(
          java.lang.String key,
          com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer.FieldType value) {
        if (key == null) { throw new NullPointerException("map key"); }

        internalGetMutableFields().getMutableMap()
            .put(key, fieldsValueConverter.doBackward(value));
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
       */
      public Builder putAllFields(
          java.util.Map values) {
        internalGetAdaptedFieldsMap(
            internalGetMutableFields().getMutableMap())
                .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map
      getMutableFieldsValue() {
        bitField0_ |= 0x00000002;
        return internalGetMutableFields().getMutableMap();
      }
      /**
       * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
       */
      public Builder putFieldsValue(
          java.lang.String key,
          int value) {
        if (key == null) { throw new NullPointerException("map key"); }

        internalGetMutableFields().getMutableMap()
            .put(key, value);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       * map<string, .com.onthegomap.planetiler.proto.VectorLayer.FieldType> fields = 2;
       */
      public Builder putAllFieldsValue(
          java.util.Map values) {
        internalGetMutableFields().getMutableMap()
            .putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }

      private java.lang.Object description_ = "";
      /**
       * string description = 3;
       * @return The description.
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          description_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string description = 3;
       * @return The bytes for description.
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string description = 3;
       * @param value The description to set.
       * @return This builder for chaining.
       */
      public Builder setDescription(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        description_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * string description = 3;
       * @return This builder for chaining.
       */
      public Builder clearDescription() {
        description_ = getDefaultInstance().getDescription();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * string description = 3;
       * @param value The bytes for description to set.
       * @return This builder for chaining.
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        description_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }

      private int minZoom_ ;
      /**
       * int32 min_zoom = 4;
       * @return The minZoom.
       */
      @java.lang.Override
      public int getMinZoom() {
        return minZoom_;
      }
      /**
       * int32 min_zoom = 4;
       * @param value The minZoom to set.
       * @return This builder for chaining.
       */
      public Builder setMinZoom(int value) {

        minZoom_ = value;
        bitField0_ |= 0x00000008;
        onChanged();
        return this;
      }
      /**
       * int32 min_zoom = 4;
       * @return This builder for chaining.
       */
      public Builder clearMinZoom() {
        bitField0_ = (bitField0_ & ~0x00000008);
        minZoom_ = 0;
        onChanged();
        return this;
      }

      private int maxZoom_ ;
      /**
       * int32 max_zoom = 5;
       * @return The maxZoom.
       */
      @java.lang.Override
      public int getMaxZoom() {
        return maxZoom_;
      }
      /**
       * int32 max_zoom = 5;
       * @param value The maxZoom to set.
       * @return This builder for chaining.
       */
      public Builder setMaxZoom(int value) {

        maxZoom_ = value;
        bitField0_ |= 0x00000010;
        onChanged();
        return this;
      }
      /**
       * int32 max_zoom = 5;
       * @return This builder for chaining.
       */
      public Builder clearMaxZoom() {
        bitField0_ = (bitField0_ & ~0x00000010);
        maxZoom_ = 0;
        onChanged();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:com.onthegomap.planetiler.proto.VectorLayer)
    }

    // @@protoc_insertion_point(class_scope:com.onthegomap.planetiler.proto.VectorLayer)
    private static final com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer();
    }

    public static com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public VectorLayer parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

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

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

    @java.lang.Override
    public com.onthegomap.planetiler.proto.StreamArchiveProto.VectorLayer getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_onthegomap_planetiler_proto_Entry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_onthegomap_planetiler_proto_Entry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_onthegomap_planetiler_proto_TileEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_onthegomap_planetiler_proto_TileEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_onthegomap_planetiler_proto_InitializationEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_onthegomap_planetiler_proto_InitializationEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_onthegomap_planetiler_proto_FinishEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_onthegomap_planetiler_proto_FinishEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_onthegomap_planetiler_proto_Metadata_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_onthegomap_planetiler_proto_Metadata_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_onthegomap_planetiler_proto_Metadata_OthersEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_onthegomap_planetiler_proto_Metadata_OthersEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_onthegomap_planetiler_proto_Envelope_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_onthegomap_planetiler_proto_Envelope_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_onthegomap_planetiler_proto_Coordinate_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_onthegomap_planetiler_proto_Coordinate_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_onthegomap_planetiler_proto_VectorLayer_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_onthegomap_planetiler_proto_VectorLayer_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_com_onthegomap_planetiler_proto_VectorLayer_FieldsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_com_onthegomap_planetiler_proto_VectorLayer_FieldsEntry_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\032stream_archive_proto.proto\022\037com.ontheg" +
      "omap.planetiler.proto\"\334\001\n\005Entry\022:\n\004tile\030" +
      "\001 \001(\0132*.com.onthegomap.planetiler.proto." +
      "TileEntryH\000\022N\n\016initialization\030\002 \001(\01324.co" +
      "m.onthegomap.planetiler.proto.Initializa" +
      "tionEntryH\000\022>\n\006finish\030\003 \001(\0132,.com.ontheg" +
      "omap.planetiler.proto.FinishEntryH\000B\007\n\005e" +
      "ntry\"B\n\tTileEntry\022\t\n\001x\030\001 \001(\005\022\t\n\001y\030\002 \001(\005\022" +
      "\t\n\001z\030\003 \001(\005\022\024\n\014encoded_data\030\004 \001(\014\"\025\n\023Init" +
      "ializationEntry\"J\n\013FinishEntry\022;\n\010metada" +
      "ta\030\001 \001(\0132).com.onthegomap.planetiler.pro" +
      "to.Metadata\"\224\004\n\010Metadata\022\014\n\004name\030\001 \001(\t\022\023" +
      "\n\013description\030\002 \001(\t\022\023\n\013attribution\030\003 \001(\t" +
      "\022\017\n\007version\030\004 \001(\t\022\014\n\004type\030\005 \001(\t\022\016\n\006forma" +
      "t\030\006 \001(\t\0229\n\006bounds\030\007 \001(\0132).com.onthegomap" +
      ".planetiler.proto.Envelope\022;\n\006center\030\010 \001" +
      "(\0132+.com.onthegomap.planetiler.proto.Coo" +
      "rdinate\022\020\n\010min_zoom\030\t \001(\005\022\020\n\010max_zoom\030\n " +
      "\001(\005\022C\n\rvector_layers\030\013 \003(\0132,.com.onthego" +
      "map.planetiler.proto.VectorLayer\022E\n\006othe" +
      "rs\030\014 \003(\01325.com.onthegomap.planetiler.pro" +
      "to.Metadata.OthersEntry\022J\n\020tile_compress" +
      "ion\030\r \001(\01620.com.onthegomap.planetiler.pr" +
      "oto.TileCompression\032-\n\013OthersEntry\022\013\n\003ke" +
      "y\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"F\n\010Envelope\022\r" +
      "\n\005min_x\030\001 \001(\001\022\r\n\005max_x\030\002 \001(\001\022\r\n\005min_y\030\003 " +
      "\001(\001\022\r\n\005max_y\030\004 \001(\001\"-\n\nCoordinate\022\t\n\001x\030\001 " +
      "\001(\001\022\t\n\001y\030\002 \001(\001\022\t\n\001z\030\003 \001(\001\"\362\002\n\013VectorLaye" +
      "r\022\n\n\002id\030\001 \001(\t\022H\n\006fields\030\002 \003(\01328.com.onth" +
      "egomap.planetiler.proto.VectorLayer.Fiel" +
      "dsEntry\022\023\n\013description\030\003 \001(\t\022\020\n\010min_zoom" +
      "\030\004 \001(\005\022\020\n\010max_zoom\030\005 \001(\005\032e\n\013FieldsEntry\022" +
      "\013\n\003key\030\001 \001(\t\022E\n\005value\030\002 \001(\01626.com.ontheg" +
      "omap.planetiler.proto.VectorLayer.FieldT" +
      "ype:\0028\001\"m\n\tFieldType\022\032\n\026FIELD_TYPE_UNSPE" +
      "CIFIED\020\000\022\025\n\021FIELD_TYPE_NUMBER\020\001\022\026\n\022FIELD" +
      "_TYPE_BOOLEAN\020\003\022\025\n\021FIELD_TYPE_STRING\020\004*i" +
      "\n\017TileCompression\022 \n\034TILE_COMPRESSION_UN" +
      "SPECIFIED\020\000\022\031\n\025TILE_COMPRESSION_GZIP\020\001\022\031" +
      "\n\025TILE_COMPRESSION_NONE\020\002b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_com_onthegomap_planetiler_proto_Entry_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_com_onthegomap_planetiler_proto_Entry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_onthegomap_planetiler_proto_Entry_descriptor,
        new java.lang.String[] { "Tile", "Initialization", "Finish", "Entry", });
    internal_static_com_onthegomap_planetiler_proto_TileEntry_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_com_onthegomap_planetiler_proto_TileEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_onthegomap_planetiler_proto_TileEntry_descriptor,
        new java.lang.String[] { "X", "Y", "Z", "EncodedData", });
    internal_static_com_onthegomap_planetiler_proto_InitializationEntry_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_com_onthegomap_planetiler_proto_InitializationEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_onthegomap_planetiler_proto_InitializationEntry_descriptor,
        new java.lang.String[] { });
    internal_static_com_onthegomap_planetiler_proto_FinishEntry_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_com_onthegomap_planetiler_proto_FinishEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_onthegomap_planetiler_proto_FinishEntry_descriptor,
        new java.lang.String[] { "Metadata", });
    internal_static_com_onthegomap_planetiler_proto_Metadata_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_com_onthegomap_planetiler_proto_Metadata_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_onthegomap_planetiler_proto_Metadata_descriptor,
        new java.lang.String[] { "Name", "Description", "Attribution", "Version", "Type", "Format", "Bounds", "Center", "MinZoom", "MaxZoom", "VectorLayers", "Others", "TileCompression", });
    internal_static_com_onthegomap_planetiler_proto_Metadata_OthersEntry_descriptor =
      internal_static_com_onthegomap_planetiler_proto_Metadata_descriptor.getNestedTypes().get(0);
    internal_static_com_onthegomap_planetiler_proto_Metadata_OthersEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_onthegomap_planetiler_proto_Metadata_OthersEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_com_onthegomap_planetiler_proto_Envelope_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_com_onthegomap_planetiler_proto_Envelope_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_onthegomap_planetiler_proto_Envelope_descriptor,
        new java.lang.String[] { "MinX", "MaxX", "MinY", "MaxY", });
    internal_static_com_onthegomap_planetiler_proto_Coordinate_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_com_onthegomap_planetiler_proto_Coordinate_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_onthegomap_planetiler_proto_Coordinate_descriptor,
        new java.lang.String[] { "X", "Y", "Z", });
    internal_static_com_onthegomap_planetiler_proto_VectorLayer_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_com_onthegomap_planetiler_proto_VectorLayer_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_onthegomap_planetiler_proto_VectorLayer_descriptor,
        new java.lang.String[] { "Id", "Fields", "Description", "MinZoom", "MaxZoom", });
    internal_static_com_onthegomap_planetiler_proto_VectorLayer_FieldsEntry_descriptor =
      internal_static_com_onthegomap_planetiler_proto_VectorLayer_descriptor.getNestedTypes().get(0);
    internal_static_com_onthegomap_planetiler_proto_VectorLayer_FieldsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessage.FieldAccessorTable(
        internal_static_com_onthegomap_planetiler_proto_VectorLayer_FieldsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    descriptor.resolveAllFeaturesImmutable();
  }

  // @@protoc_insertion_point(outer_class_scope)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy